IronMeta  Version 3.2
IronMeta Main Page
Get IronMeta at Fast, secure and Free Open Source software downloads Support This Project The IronMeta parser generator provides a programming language and application for generating pattern matchers on arbitrary streams of objects. It is an implementation of Alessandro Warth's OMeta system for C#.

IronMeta is available under the terms of the BSD License.


IronMeta was written entirely by Gordon Tisher.


Although the most common use for IronMeta is to build parsers on streams of text for use in compiling or other text processing, IronMeta can generate pattern matchers (more accurately, transducers) for any input and output type. You can use C# syntax directly in grammar rules to specify objects to match.

Current limitations:


3.2: October 22, 2013:

3.0: April 9, 2013: VS 2012 and NuGet package.

2.3: February 27, 2012: Combining parsers.

2.2: February 21, 2012: Miscellaneous bug fixes.

2.1: July 1, 2011: Much refactoring, miscellaneous bug fixes.

2.0: December 4, 2010: Many internal improvements.

1.4: July 18, 2009: Bug fixes and samples.

1.3: June 2, 2009: Optimization pass.

1.2: June 1, 2009: Bug fixes and miscellaneous enhancements.


1.0: May 16, 2009: Initial release

Get IronMeta

IronMeta is built for .NET 4.5, and is distributed using NuGet. Open the Package Manager for a project in Visual Studio 2012 and search for IronMeta. Installing the package in your project will install the needed DLLs.

Programming with IronMeta

Once you have installed the NuGet package, add a file with the extension .ironmeta to your project. Visual Studio will automatically generate a C# grammar class for you and include it in your project. The generated parser class is declared as partial, so you can add ancillary code in another file if you wish.

In addition to the Visual Studio addin, the IronMeta executable is included in the tools directory of the NuGet package installation directory.

In order to use the IronMeta executable, run IronMeta.exe on your IronMeta file, which must have the extension .ironmeta. You can specify the following arguments to the program:

In order to use an IronMeta-generated parser in your C# program, do the following:

The following is a small sample program that uses the Calc The IronMeta Language demo parser that is included in the distribution.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyCalcProject
    class Program

        static void Main(string[] args)
            var parser = new Calc();
            var match = parser.GetMatch("2 * 7", parser.Expression);

            if (match.Success)
                Console.WriteLine("result: {0}", match.Result); // should print "14"
                Console.WriteLine("error: {0}", match.Error); // shouldn't happen


Support and Reporting Bugs

There is a forum for asking questions about IronMeta at SourceForge.

If you come across a bug in IronMeta, please fill out a bug report at the SourceForge bug tracker.

Building IronMeta from Source

In order to build IronMeta, you must download the source code using a Mercurial client:

hg clone ironmeta

The Source folder of the source code contains a Visual Studio 2012 solution file called IronMeta.sln. This includes several projects:

If you would like to contribute to the development of IronMeta, please send patches or pull requests to the project admin listed at the SourceForge website or the IronMeta developers forum.

Copyright (C) 2009-2013 The IronMeta Project Get IronMeta at Fast, secure and Free Open Source software downloads Support This Project

Generated by doxygen