<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>irony Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/irony/Wiki/View.aspx?title=Home</link><description>irony Wiki Rss Description</description><item><title>Updated Wiki: Contributors</title><link>http://irony.codeplex.com/wikipage?title=Contributors&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Contributors&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following people made contributions to Irony project, and would like to express my gratitude to:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Philipp Serr&lt;/b&gt;: completed NumberLiteral implementation with advanced features for c#, python, VB&lt;br /&gt;CodePlex user &lt;b&gt;notmasteryet&lt;/b&gt;: improved GwBasic grammar to make it match the syntax rules of GwBasic&lt;br /&gt;&lt;b&gt;Benjamen Morrison&lt;/b&gt;: created an implementation of Language Services for Visual Studio integration based on Irony.   This code is not a part of Irony codebase (yet), but you can find it in the article in CodeProject.com&lt;br /&gt;&lt;b&gt;Michael Coles&lt;/b&gt; - created SearchGrammar for converting Google-like search queries into MS SQL Server full-text search syntax. The code is used in his book &amp;quot;Pro Full-Text Search in SQL Server 2008&amp;quot;.&lt;br /&gt;&lt;b&gt;Kirill Osenkov&lt;/b&gt;: created IronySilverlight, Irony version for Silverlight environment&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sun, 15 Nov 2009 17:14:06 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Contributors 20091115051406P</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/wikipage?version=65</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/wikipage?title=expression%20grammar%20sample&amp;referringTitle=Home"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET, SQL, GwBasic, JSON and others. &lt;br /&gt;Sample expression grammar allows evaluation of arithmetic expressions using Irony's built-in AST interpreter.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" title="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;May 2, 2009. Started a &lt;b&gt;blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;
&lt;li&gt;Oct 12, 2009. Updated the release download version&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/wikipage?title=Contributors&amp;referringTitle=Home"&gt;Contributors&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/wikipage?title=Demo%20Running%20Instructions&amp;referringTitle=Home"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/wikipage?title=Expression%20Grammar%20sample&amp;referringTitle=Home"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;Irony presentation at LangNET 2009 symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;Irony blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sun, 15 Nov 2009 17:12:27 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20091115051227P</guid></item><item><title>Updated Wiki: expression grammar sample</title><link>http://irony.codeplex.com/wikipage?title=expression grammar sample&amp;version=19</link><description>&lt;div class="wikidoc"&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;

&lt;span style="color:Blue;"&gt;using&lt;/span&gt; System;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; Irony.Parsing;
&lt;span style="color:Blue;"&gt;using&lt;/span&gt; Irony.Ast;

&lt;span style="color:Blue;"&gt;namespace&lt;/span&gt; Irony.Samples {
  &lt;span style="color:Green;"&gt;// This grammar describes programs that consist of simple expressions and assignments&lt;/span&gt;
  &lt;span style="color:Green;"&gt;// for ex:&lt;/span&gt;
  &lt;span style="color:Green;"&gt;// x = 3&lt;/span&gt;
  &lt;span style="color:Green;"&gt;// y = -x + 5&lt;/span&gt;
  &lt;span style="color:Green;"&gt;//  the result of calculation is the result of last expression or assignment.&lt;/span&gt;
  &lt;span style="color:Green;"&gt;//  Irony's default  runtime provides expression evaluation. &lt;/span&gt;
  &lt;span style="color:Green;"&gt;//  supports inc/dec operators (++,--), both prefix and postfix,&lt;/span&gt;
  &lt;span style="color:Green;"&gt;//  and combined assignment operators like +=, -=, etc.&lt;/span&gt;

  [Language(&lt;span style="color:#A31515;"&gt;&amp;quot;ExpressionEvaluator&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;Multi-line expression evaluator&amp;quot;&lt;/span&gt;)]
  &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; ExpressionEvaluatorGrammar : Irony.Parsing.Grammar {
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ExpressionEvaluatorGrammar() {

      &lt;span style="color:Green;"&gt;// 1. Terminals&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; number = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NumberLiteral(&lt;span style="color:#A31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Green;"&gt;//Let's allow big integers (with unlimited number of digits):&lt;/span&gt;
      number.DefaultIntTypes = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; TypeCode[] { TypeCode.Int32, TypeCode.Int64, NumberLiteral.TypeCodeBigInt };
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; identifier = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; IdentifierTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;identifier&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; comment = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; CommentTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;comment&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;#&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;\r&amp;quot;&lt;/span&gt;); 
      &lt;span style="color:Green;"&gt;//comment must to be added to NonGrammarTerminals list; it is not used directly in grammar rules,&lt;/span&gt;
      &lt;span style="color:Green;"&gt;// so we add it to this list to let Scanner know that it is also a valid terminal. &lt;/span&gt;
      &lt;span style="color:Blue;"&gt;base&lt;/span&gt;.NonGrammarTerminals.Add(comment);

      &lt;span style="color:Green;"&gt;// 2. Non-terminals&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; Expr = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;Expr&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; Term = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;Term&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; BinExpr = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;BinExpr&amp;quot;&lt;/span&gt;, &lt;span style="color:Blue;"&gt;typeof&lt;/span&gt;(BinExprNode));
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; ParExpr = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;ParExpr&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; UnExpr = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;UnExpr&amp;quot;&lt;/span&gt;, &lt;span style="color:Blue;"&gt;typeof&lt;/span&gt;(UnExprNode));
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; UnOp = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;UnOp&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; BinOp = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;BinOp&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;operator&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; PostFixExpr = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;PostFixExpr&amp;quot;&lt;/span&gt;, &lt;span style="color:Blue;"&gt;typeof&lt;/span&gt;(UnExprNode));
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; PostFixOp = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;PostFixOp&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; AssignmentStmt = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;AssignmentStmt&amp;quot;&lt;/span&gt;, &lt;span style="color:Blue;"&gt;typeof&lt;/span&gt;(AssigmentNode));
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; AssignmentOp = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;AssignmentOp&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;assignment operator&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; Statement = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;Statement&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; ProgramLine = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;ProgramLine&amp;quot;&lt;/span&gt;);
      &lt;span style="color:Blue;"&gt;var&lt;/span&gt; Program = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; NonTerminal(&lt;span style="color:#A31515;"&gt;&amp;quot;Program&amp;quot;&lt;/span&gt;, &lt;span style="color:Blue;"&gt;typeof&lt;/span&gt;(StatementListNode));

      &lt;span style="color:Green;"&gt;// 3. BNF rules&lt;/span&gt;
      Expr.Rule = Term | UnExpr | BinExpr | PostFixExpr;
      Term.Rule = number | ParExpr | identifier;
      ParExpr.Rule = &lt;span style="color:#A31515;"&gt;&amp;quot;(&amp;quot;&lt;/span&gt; + Expr + &lt;span style="color:#A31515;"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;;
      UnExpr.Rule = UnOp + Term;
      UnOp.Rule = ToTerm(&lt;span style="color:#A31515;"&gt;&amp;quot;+&amp;quot;&lt;/span&gt;) | &lt;span style="color:#A31515;"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; | &lt;span style="color:#A31515;"&gt;&amp;quot;++&amp;quot;&lt;/span&gt; | &lt;span style="color:#A31515;"&gt;&amp;quot;--&amp;quot;&lt;/span&gt;;
      BinExpr.Rule = Expr + BinOp + Expr;
      BinOp.Rule = ToTerm(&lt;span style="color:#A31515;"&gt;&amp;quot;+&amp;quot;&lt;/span&gt;) | &lt;span style="color:#A31515;"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; | &lt;span style="color:#A31515;"&gt;&amp;quot;*&amp;quot;&lt;/span&gt; | &lt;span style="color:#A31515;"&gt;&amp;quot;/&amp;quot;&lt;/span&gt; | &lt;span style="color:#A31515;"&gt;&amp;quot;**&amp;quot;&lt;/span&gt;;
      PostFixExpr.Rule = Term + PostFixOp;
      PostFixOp.Rule = ToTerm(&lt;span style="color:#A31515;"&gt;&amp;quot;++&amp;quot;&lt;/span&gt;) | &lt;span style="color:#A31515;"&gt;&amp;quot;--&amp;quot;&lt;/span&gt;;
      AssignmentStmt.Rule = identifier + AssignmentOp + Expr;
      AssignmentOp.Rule = ToTerm(&lt;span style="color:#A31515;"&gt;&amp;quot;=&amp;quot;&lt;/span&gt;) | &lt;span style="color:#A31515;"&gt;&amp;quot;+=&amp;quot;&lt;/span&gt; | &lt;span style="color:#A31515;"&gt;&amp;quot;-=&amp;quot;&lt;/span&gt; | &lt;span style="color:#A31515;"&gt;&amp;quot;*=&amp;quot;&lt;/span&gt; | &lt;span style="color:#A31515;"&gt;&amp;quot;/=&amp;quot;&lt;/span&gt;;
      Statement.Rule = AssignmentStmt | Expr | Empty;
      ProgramLine.Rule = Statement + NewLine;
      Program.Rule = MakeStarRule(Program, ProgramLine);
      &lt;span style="color:Blue;"&gt;this&lt;/span&gt;.Root = Program;       &lt;span style="color:Green;"&gt;// Set grammar root&lt;/span&gt;

      &lt;span style="color:Green;"&gt;// 4. Operators precedence&lt;/span&gt;
      RegisterOperators(1, &lt;span style="color:#A31515;"&gt;&amp;quot;+&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;);
      RegisterOperators(2, &lt;span style="color:#A31515;"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;);
      RegisterOperators(3, Associativity.Right, &lt;span style="color:#A31515;"&gt;&amp;quot;**&amp;quot;&lt;/span&gt;);

      &lt;span style="color:Green;"&gt;// 5. Punctuation and transient terms&lt;/span&gt;
      RegisterPunctuation(&lt;span style="color:#A31515;"&gt;&amp;quot;(&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;);
      RegisterBracePair(&lt;span style="color:#A31515;"&gt;&amp;quot;(&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;); 
      MarkTransient(Term, Expr, Statement, BinOp, UnOp, PostFixOp, AssignmentOp, ProgramLine, ParExpr);

      &lt;span style="color:Green;"&gt;//automatically add NewLine before EOF so that our BNF rules work correctly when there's no final line break in source&lt;/span&gt;
      &lt;span style="color:Blue;"&gt;this&lt;/span&gt;.LanguageFlags = LanguageFlags.CreateAst | LanguageFlags.NewLineBeforeEOF | LanguageFlags.CanRunSample; 

    }
  }
}&lt;span style="color:Green;"&gt;//namespace&lt;/span&gt;

&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Thu, 12 Nov 2009 23:14:46 GMT</pubDate><guid isPermaLink="false">Updated Wiki: expression grammar sample 20091112111446P</guid></item><item><title>Updated Wiki: expression grammar sample</title><link>http://irony.codeplex.com/wikipage?title=expression grammar sample&amp;version=18</link><description>&lt;div class="wikidoc"&gt;&lt;pre&gt;using System;
using System.Collections.Generic;
using System.Text;
using Irony.Parsing;
using Irony.Ast;

namespace Irony.Samples {
  // This grammar describes programs that consist of simple expressions and assignments
  // for ex:
  // x = 3
  // y = -x + 5
  //  the result of calculation is the result of last expression or assignment.
  //  Irony's default  runtime provides expression evaluation. 
  //  supports inc/dec operators (++,--), both prefix and postfix,
  //  and combined assignment operators like +=, -=, etc.

  [Language(&amp;quot;ExpressionEvaluator&amp;quot;, &amp;quot;1.0&amp;quot;, &amp;quot;Multi-line expression evaluator&amp;quot;)]
  public class ExpressionEvaluatorGrammar : Irony.Parsing.Grammar {
    public ExpressionEvaluatorGrammar() {

      // 1. Terminals
      var number = new NumberLiteral(&amp;quot;number&amp;quot;);
      //Let's allow big integers (with unlimited number of digits):
      number.DefaultIntTypes = new TypeCode[] { TypeCode.Int32, TypeCode.Int64, NumberLiteral.TypeCodeBigInt };
      var identifier = new IdentifierTerminal(&amp;quot;identifier&amp;quot;);
      var comment = new CommentTerminal(&amp;quot;comment&amp;quot;, &amp;quot;#&amp;quot;, &amp;quot;\n&amp;quot;, &amp;quot;\r&amp;quot;); 
      //comment must to be added to NonGrammarTerminals list; it is not used directly in grammar rules,
      // so we add it to this list to let Scanner know that it is also a valid terminal. 
      base.NonGrammarTerminals.Add(comment);

      // 2. Non-terminals
      var Expr = new NonTerminal(&amp;quot;Expr&amp;quot;);
      var Term = new NonTerminal(&amp;quot;Term&amp;quot;);
      var BinExpr = new NonTerminal(&amp;quot;BinExpr&amp;quot;, typeof(BinExprNode));
      var ParExpr = new NonTerminal(&amp;quot;ParExpr&amp;quot;);
      var UnExpr = new NonTerminal(&amp;quot;UnExpr&amp;quot;, typeof(UnExprNode));
      var UnOp = new NonTerminal(&amp;quot;UnOp&amp;quot;);
      var BinOp = new NonTerminal(&amp;quot;BinOp&amp;quot;, &amp;quot;operator&amp;quot;);
      var PostFixExpr = new NonTerminal(&amp;quot;PostFixExpr&amp;quot;, typeof(UnExprNode));
      var PostFixOp = new NonTerminal(&amp;quot;PostFixOp&amp;quot;);
      var AssignmentStmt = new NonTerminal(&amp;quot;AssignmentStmt&amp;quot;, typeof(AssigmentNode));
      var AssignmentOp = new NonTerminal(&amp;quot;AssignmentOp&amp;quot;, &amp;quot;assignment operator&amp;quot;);
      var Statement = new NonTerminal(&amp;quot;Statement&amp;quot;);
      var ProgramLine = new NonTerminal(&amp;quot;ProgramLine&amp;quot;);
      var Program = new NonTerminal(&amp;quot;Program&amp;quot;, typeof(StatementListNode));

      // 3. BNF rules
      Expr.Rule = Term | UnExpr | BinExpr | PostFixExpr;
      Term.Rule = number | ParExpr | identifier;
      ParExpr.Rule = &amp;quot;(&amp;quot; + Expr + &amp;quot;)&amp;quot;;
      UnExpr.Rule = UnOp + Term;
      UnOp.Rule = ToTerm(&amp;quot;+&amp;quot;) | &amp;quot;-&amp;quot; | &amp;quot;++&amp;quot; | &amp;quot;--&amp;quot;;
      BinExpr.Rule = Expr + BinOp + Expr;
      BinOp.Rule = ToTerm(&amp;quot;+&amp;quot;) | &amp;quot;-&amp;quot; | &amp;quot;*&amp;quot; | &amp;quot;/&amp;quot; | &amp;quot;**&amp;quot;;
      PostFixExpr.Rule = Term + PostFixOp;
      PostFixOp.Rule = ToTerm(&amp;quot;++&amp;quot;) | &amp;quot;--&amp;quot;;
      AssignmentStmt.Rule = identifier + AssignmentOp + Expr;
      AssignmentOp.Rule = ToTerm(&amp;quot;=&amp;quot;) | &amp;quot;+=&amp;quot; | &amp;quot;-=&amp;quot; | &amp;quot;*=&amp;quot; | &amp;quot;/=&amp;quot;;
      Statement.Rule = AssignmentStmt | Expr | Empty;
      ProgramLine.Rule = Statement + NewLine;
      Program.Rule = MakeStarRule(Program, ProgramLine);
      this.Root = Program;       // Set grammar root

      // 4. Operators precedence
      RegisterOperators(1, &amp;quot;+&amp;quot;, &amp;quot;-&amp;quot;);
      RegisterOperators(2, &amp;quot;*&amp;quot;, &amp;quot;/&amp;quot;);
      RegisterOperators(3, Associativity.Right, &amp;quot;**&amp;quot;);

      // 5. Punctuation and transient terms
      RegisterPunctuation(&amp;quot;(&amp;quot;, &amp;quot;)&amp;quot;);
      RegisterBracePair(&amp;quot;(&amp;quot;, &amp;quot;)&amp;quot;); 
      MarkTransient(Term, Expr, Statement, BinOp, UnOp, PostFixOp, AssignmentOp, ProgramLine, ParExpr);

      //automatically add NewLine before EOF so that our BNF rules work correctly when there's no final line break in source
      this.LanguageFlags = LanguageFlags.CreateAst | LanguageFlags.NewLineBeforeEOF | LanguageFlags.CanRunSample; 

    }
  }
}//namespace

&lt;/pre&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Thu, 12 Nov 2009 03:38:33 GMT</pubDate><guid isPermaLink="false">Updated Wiki: expression grammar sample 20091112033833A</guid></item><item><title>Updated Wiki: expression grammar sample</title><link>http://irony.codeplex.com/wikipage?title=expression grammar sample&amp;version=17</link><description>&lt;div class="wikidoc"&gt;&lt;pre&gt;using System;
using System.Collections.Generic;
using System.Text;
using Irony.Parsing;
using Irony.Ast;

namespace Irony.Samples {
  // This grammar describes programs that consist of simple expressions and assignments
  // for ex:
  // x = 3
  // y = -x + 5
  //  the result of calculation is the result of last expression or assignment.
  //  Irony's default  runtime provides expression evaluation. 
  //  supports inc/dec operators (++,--), both prefix and postfix,
  //  and combined assignment operators like +=, -=, etc.

  [Language(&amp;quot;ExpressionEvaluator&amp;quot;, &amp;quot;1.0&amp;quot;, &amp;quot;Multi-line expression evaluator&amp;quot;)]
  public class ExpressionEvaluatorGrammar : Irony.Parsing.Grammar {
    public ExpressionEvaluatorGrammar() {

      // 1. Terminals
      var number = new NumberLiteral(&amp;quot;number&amp;quot;);
      //Let's allow big integers (with unlimited number of digits):
      number.DefaultIntTypes = new TypeCode[] { TypeCode.Int32, TypeCode.Int64, NumberLiteral.TypeCodeBigInt };
      var identifier = new IdentifierTerminal(&amp;quot;identifier&amp;quot;);
      var comment = new CommentTerminal(&amp;quot;comment&amp;quot;, &amp;quot;#&amp;quot;, &amp;quot;\n&amp;quot;, &amp;quot;\r&amp;quot;); //new
      //comment must to be added to NonGrammarTerminals list; it is not used directly in grammar rules,
      // so we add it to this list to let Scanner know that it is also a valid terminal. 
      base.NonGrammarTerminals.Add(comment);

      // 2. Non-terminals
      var Expr = new NonTerminal(&amp;quot;Expr&amp;quot;);
      var Term = new NonTerminal(&amp;quot;Term&amp;quot;);
      var BinExpr = new NonTerminal(&amp;quot;BinExpr&amp;quot;, typeof(BinExprNode));
      var ParExpr = new NonTerminal(&amp;quot;ParExpr&amp;quot;);
      var UnExpr = new NonTerminal(&amp;quot;UnExpr&amp;quot;, typeof(UnExprNode));
      var UnOp = new NonTerminal(&amp;quot;UnOp&amp;quot;);
      var BinOp = new NonTerminal(&amp;quot;BinOp&amp;quot;, &amp;quot;operator&amp;quot;);
      var PostFixExpr = new NonTerminal(&amp;quot;PostFixExpr&amp;quot;, typeof(UnExprNode));
      var PostFixOp = new NonTerminal(&amp;quot;PostFixOp&amp;quot;);
      var AssignmentStmt = new NonTerminal(&amp;quot;AssignmentStmt&amp;quot;, typeof(AssigmentNode));
      var AssignmentOp = new NonTerminal(&amp;quot;AssignmentOp&amp;quot;, &amp;quot;assignment operator&amp;quot;);
      var Statement = new NonTerminal(&amp;quot;Statement&amp;quot;);
      var ProgramLine = new NonTerminal(&amp;quot;ProgramLine&amp;quot;);
      var Program = new NonTerminal(&amp;quot;Program&amp;quot;, typeof(StatementListNode));

      // 3. BNF rules
      Expr.Rule = Term | UnExpr | BinExpr | PostFixExpr;
      Term.Rule = number | ParExpr | identifier;
      ParExpr.Rule = &amp;quot;(&amp;quot; + Expr + &amp;quot;)&amp;quot;;
      UnExpr.Rule = UnOp + Term;
      UnOp.Rule = ToTerm(&amp;quot;+&amp;quot;) | &amp;quot;-&amp;quot; | &amp;quot;++&amp;quot; | &amp;quot;--&amp;quot;;
      BinExpr.Rule = Expr + BinOp + Expr;
      BinOp.Rule = ToTerm(&amp;quot;+&amp;quot;) | &amp;quot;-&amp;quot; | &amp;quot;*&amp;quot; | &amp;quot;/&amp;quot; | &amp;quot;**&amp;quot;;
      PostFixExpr.Rule = Term + PostFixOp;
      PostFixOp.Rule = ToTerm(&amp;quot;++&amp;quot;) | &amp;quot;--&amp;quot;;
      AssignmentStmt.Rule = identifier + AssignmentOp + Expr;
      AssignmentOp.Rule = ToTerm(&amp;quot;=&amp;quot;) | &amp;quot;+=&amp;quot; | &amp;quot;-=&amp;quot; | &amp;quot;*=&amp;quot; | &amp;quot;/=&amp;quot;;
      Statement.Rule = AssignmentStmt | Expr | Empty;
      ProgramLine.Rule = Statement + NewLine;
      Program.Rule = MakeStarRule(Program, ProgramLine);
      this.Root = Program;       // Set grammar root

      // 4. Operators precedence
      RegisterOperators(1, &amp;quot;+&amp;quot;, &amp;quot;-&amp;quot;);
      RegisterOperators(2, &amp;quot;*&amp;quot;, &amp;quot;/&amp;quot;);
      RegisterOperators(3, Associativity.Right, &amp;quot;**&amp;quot;);

      // 5. Punctuation and transient terms
      RegisterPunctuation(&amp;quot;(&amp;quot;, &amp;quot;)&amp;quot;);
      RegisterBracePair(&amp;quot;(&amp;quot;, &amp;quot;)&amp;quot;); 
      MarkTransient(Term, Expr, Statement, BinOp, UnOp, PostFixOp, AssignmentOp, ProgramLine, ParExpr);

      //automatically add NewLine before EOF so that our BNF rules work correctly when there's no final line break in source
      this.LanguageFlags = LanguageFlags.CreateAst | LanguageFlags.NewLineBeforeEOF | LanguageFlags.CanRunSample; 

    }
  }
}//namespace

&lt;/pre&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sat, 07 Nov 2009 17:03:30 GMT</pubDate><guid isPermaLink="false">Updated Wiki: expression grammar sample 20091107050330P</guid></item><item><title>Updated Wiki: expression grammar sample</title><link>http://irony.codeplex.com/wikipage?title=expression grammar sample&amp;version=16</link><description>&lt;div class="wikidoc"&gt;&lt;pre&gt;using System;
using System.Collections.Generic;
using System.Text;
using Irony.Parsing;
using Irony.Ast;

namespace Irony.Samples {
  // This grammar describes programs that consist of simple expressions and assignments
  // for ex:
  // x = 3
  // y = -x + 5
  //  the result of calculation is the result of last expression or assignment.
  //  Irony's default  runtime provides expression evaluation. 
  //  supports inc/dec operators (++,--), both prefix and postfix,
  //  and combined assignment operators like +=, -=, etc.

  [Language(&amp;quot;ExpressionEvaluator&amp;quot;, &amp;quot;1.0&amp;quot;, &amp;quot;Multi-line expression evaluator&amp;quot;)]
  public class ExpressionEvaluatorGrammar : Irony.Parsing.Grammar {
    public ExpressionEvaluatorGrammar() {

      // 1. Terminals
      var number = new NumberLiteral(&amp;quot;number&amp;quot;);
      //Let's allow big integers (with unlimited number of digits):
      number.DefaultIntTypes = new TypeCode[] { TypeCode.Int32, TypeCode.Int64, NumberLiteral.TypeCodeBigInt };
      var identifier = new IdentifierTerminal(&amp;quot;identifier&amp;quot;);
      var comment = new CommentTerminal(&amp;quot;comment&amp;quot;, &amp;quot;#&amp;quot;, &amp;quot;\n&amp;quot;, &amp;quot;\r&amp;quot;); //new
      //comment must to be added to NonGrammarTerminals list; it is not used directly in grammar rules,
      // so we add it to this list to let Scanner know that it is also a valid terminal. 
      base.NonGrammarTerminals.Add(comment);

      // 2. Non-terminals
      var Expr = new NonTerminal(&amp;quot;Expr&amp;quot;);
      var Term = new NonTerminal(&amp;quot;Term&amp;quot;);
      var BinExpr = new NonTerminal(&amp;quot;BinExpr&amp;quot;, typeof(BinExprNode));
      var ParExpr = new NonTerminal(&amp;quot;ParExpr&amp;quot;);
      var UnExpr = new NonTerminal(&amp;quot;UnExpr&amp;quot;, typeof(UnExprNode));
      var UnOp = new NonTerminal(&amp;quot;UnOp&amp;quot;);
      var BinOp = new NonTerminal(&amp;quot;BinOp&amp;quot;, &amp;quot;operator&amp;quot;);
      var PostFixExpr = new NonTerminal(&amp;quot;PostFixExpr&amp;quot;, typeof(UnExprNode));
      var PostFixOp = new NonTerminal(&amp;quot;PostFixOp&amp;quot;);
      var AssignmentStmt = new NonTerminal(&amp;quot;AssignmentStmt&amp;quot;, typeof(AssigmentNode));
      var AssignmentOp = new NonTerminal(&amp;quot;AssignmentOp&amp;quot;, &amp;quot;assignment operator&amp;quot;);
      var Statement = new NonTerminal(&amp;quot;Statement&amp;quot;);
      var ProgramLine = new NonTerminal(&amp;quot;ProgramLine&amp;quot;);
      var Program = new NonTerminal(&amp;quot;Program&amp;quot;, typeof(StatementListNode));

      // 3. BNF rules
      Expr.Rule = Term | UnExpr | BinExpr | PostFixExpr;
      Term.Rule = number | ParExpr | identifier;
      ParExpr.Rule = &amp;quot;(&amp;quot; + Expr + &amp;quot;)&amp;quot;;
      UnExpr.Rule = UnOp + Term;
      UnOp.Rule = ToTerm(&amp;quot;+&amp;quot;) | &amp;quot;-&amp;quot; | &amp;quot;++&amp;quot; | &amp;quot;--&amp;quot;;
      BinExpr.Rule = Expr + BinOp + Expr;
      BinOp.Rule = ToTerm(&amp;quot;+&amp;quot;) | &amp;quot;-&amp;quot; | &amp;quot;*&amp;quot; | &amp;quot;/&amp;quot; | &amp;quot;**&amp;quot;;
      PostFixExpr.Rule = Term + PostFixOp;
      PostFixOp.Rule = ToTerm(&amp;quot;++&amp;quot;) | &amp;quot;--&amp;quot;;
      AssignmentStmt.Rule = identifier + AssignmentOp + Expr;
      AssignmentOp.Rule = ToTerm(&amp;quot;=&amp;quot;) | &amp;quot;+=&amp;quot; | &amp;quot;-=&amp;quot; | &amp;quot;*=&amp;quot; | &amp;quot;/=&amp;quot;;
      Statement.Rule = AssignmentStmt | Expr | Empty;
      ProgramLine.Rule = Statement + NewLine;
      Program.Rule = MakeStarRule(Program, ProgramLine);
      this.Root = Program;       // Set grammar root

      // 4. Operators precedence
      RegisterOperators(1, &amp;quot;+&amp;quot;, &amp;quot;-&amp;quot;);
      RegisterOperators(2, &amp;quot;*&amp;quot;, &amp;quot;/&amp;quot;);
      RegisterOperators(3, Associativity.Right, &amp;quot;**&amp;quot;);

      RegisterPunctuation(&amp;quot;(&amp;quot;, &amp;quot;)&amp;quot;);
      RegisterBracePair(&amp;quot;(&amp;quot;, &amp;quot;)&amp;quot;); 
      MarkTransient(Term, Expr, Statement, BinOp, UnOp, PostFixOp, AssignmentOp, ProgramLine, ParExpr);

      //automatically add NewLine before EOF so that our BNF rules work correctly when there's no final line break in source
      this.LanguageFlags = LanguageFlags.CreateAst | LanguageFlags.NewLineBeforeEOF | LanguageFlags.CanRunSample; 

    }
  }
}//namespace

&lt;/pre&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sat, 07 Nov 2009 17:01:51 GMT</pubDate><guid isPermaLink="false">Updated Wiki: expression grammar sample 20091107050151P</guid></item><item><title>Updated Wiki: Demo Running Instructions</title><link>http://irony.codeplex.com/wikipage?title=Demo Running Instructions&amp;version=11</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Demo instructions&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Open Irony_All.sln solution file in Visual Studio.&lt;/li&gt;
&lt;li&gt;Right-click on the project &amp;quot;030.Irony.GrammarExplorer&amp;quot; and select &amp;quot;Set as StartUp project&amp;quot; from the context menu.&lt;/li&gt;
&lt;li&gt;Click Run button on toolbar (F5). Grammar Explorer Window opens.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Important: if you are launching the Grammar Explorer for the first time after downloading Irony and if you see that Grammars combobox is not empty, then clear it: click on the button next to the combobox and select &amp;quot;Remove all&amp;quot;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;If the Grammar combobox on top is empty, click on the button next to it (or right-click the combobox) and select &amp;quot;Add grammar&amp;quot; command. In the file-open window that appears, navigate to (root)\Irony.Samples\bin\debug folder and select Irony.Samples.dll. Application will popup a small window with a list of grammars in selected assembly. Leave all lines checked and click &amp;quot;OK&amp;quot;. The newly added grammars will appear in the grammar combobox.  &lt;/li&gt;
&lt;li&gt;Select a grammar (language) in top combo-box. If you see exception window with error popping up, then go back to previous step and remove all old grammars by selecting &amp;quot;Remove all&amp;quot; command.&lt;/li&gt;
&lt;li&gt;Browse form tabs to see grammar data. &lt;/li&gt;
&lt;li&gt;To parse source code sample, switch to &amp;quot;Test&amp;quot; tab. Click &amp;quot;Load...&amp;quot; button on top of the form. Open file dialog opens.&lt;/li&gt;
&lt;li&gt;Navigate to &amp;lt;root&amp;gt;\Irony.Samples\SourceSamples folder. Select source file appropriate for currently selected grammar. &lt;/li&gt;
&lt;li&gt;Source file contents are loaded into text area in the form. Click Parse button on top of the form. &lt;/li&gt;
&lt;li&gt;The Output Syntax Tree control on the right (in Results tab in the right tab control) would contain a parsed syntax tree.&lt;/li&gt;
&lt;li&gt;If button &amp;quot;Run&amp;quot; is enabled, click it to execute the code. The results are shown in the Output window at the bottom of the form. For Expression Evaluator grammar, the output is the result of the last expression or assignment. Interpreter for Scheme can execute more complex programs found in SourceSamples\Scheme subfolder.  &lt;/li&gt;
&lt;li&gt;Alternatively you can paste or type your own sample program into source text area. &lt;/li&gt;
&lt;li&gt;Repeat for other selections in the Grammar combobox.&lt;/li&gt;&lt;/ul&gt;
Note that Grammar Explorer restores your last language selection and source sample after you close/restart the form. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Fri, 16 Oct 2009 22:34:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Demo Running Instructions 20091016103428P</guid></item><item><title>Updated Wiki: Demo Running Instructions</title><link>http://irony.codeplex.com/wikipage?title=Demo Running Instructions&amp;version=10</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Demo instructions&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Open Irony_All.sln solution file in Visual Studio.&lt;/li&gt;
&lt;li&gt;Right-click on the project &amp;quot;030.Irony.GrammarExplorer&amp;quot; and select &amp;quot;Set as StartUp project&amp;quot; from the context menu.&lt;/li&gt;
&lt;li&gt;Click Run button on toolbar (F5). Grammar Explorer Window opens.&lt;/li&gt;
&lt;li&gt;Important: if you are launching the Grammar Explorer for the first time after downloading Irony and &lt;/li&gt;&lt;/ul&gt;
    if you see that Grammars combobox is not empty, then clear it: click on the button next to the combobox and select &amp;quot;Remove all&amp;quot;
&lt;ul&gt;&lt;li&gt;If the Grammar combobox on top is empty, click on the button next to it (or right-click the combobox) and select &amp;quot;Add grammar&amp;quot; command. In the file-open window that appears, navigate to (root)\Irony.Samples\bin\debug folder and select Irony.Samples.dll. Application will popup a small window with a list of grammars in selected assembly. Leave all lines checked and click &amp;quot;OK&amp;quot;. The newly added grammars will appear in the grammar combobox.  &lt;/li&gt;
&lt;li&gt;Select a grammar (language) in top combo-box. If you see exception window with error popping up, then go back to previous step and remove all old grammars by selecting &amp;quot;Remove all&amp;quot; command.&lt;/li&gt;
&lt;li&gt;Browse form tabs to see grammar data. &lt;/li&gt;
&lt;li&gt;To parse source code sample, switch to &amp;quot;Test&amp;quot; tab. Click &amp;quot;Load...&amp;quot; button on top of the form. Open file dialog opens.&lt;/li&gt;
&lt;li&gt;Navigate to &amp;lt;root&amp;gt;\Irony.Samples\SourceSamples folder. Select source file appropriate for currently selected grammar. &lt;/li&gt;
&lt;li&gt;Source file contents are loaded into text area in the form. Click Parse button on top of the form. &lt;/li&gt;
&lt;li&gt;The Output Syntax Tree control on the right (in Results tab in the right tab control) would contain a parsed syntax tree.&lt;/li&gt;
&lt;li&gt;If button &amp;quot;Run&amp;quot; is enabled, click it to execute the code. The results are shown in the Output window at the bottom of the form. For Expression Evaluator grammar, the output is the result of the last expression or assignment. Interpreter for Scheme can execute more complex programs found in SourceSamples\Scheme subfolder.  &lt;/li&gt;
&lt;li&gt;Alternatively you can paste or type your own sample program into source text area. &lt;/li&gt;
&lt;li&gt;Repeat for other selections in the Grammar combobox.&lt;/li&gt;&lt;/ul&gt;
Note that Grammar Explorer restores your last language selection and source sample after you close/restart the form. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Fri, 16 Oct 2009 22:33:42 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Demo Running Instructions 20091016103342P</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=64</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET, SQL, GwBasic, JSON and others. &lt;br /&gt;Sample expression grammar allows evaluation of arithmetic expressions using Irony's built-in AST interpreter.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" title="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;May 2, 2009. Started a &lt;b&gt;blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;
&lt;li&gt;Oct 12, 2009. Updated the release download version&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;Irony presentation at LangNET 2009 symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;Irony blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Tue, 13 Oct 2009 13:20:59 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20091013012059P</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=63</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET, SQL, GwBasic, JSON and others. &lt;br /&gt;Sample expression grammar allows evaluation of arithmetic expressions using Irony's built-in AST interpreter.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" title="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;May 2, 2009. Started a &lt;b&gt;blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;Irony presentation at LangNET 2009 symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;Irony blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Tue, 13 Oct 2009 13:19:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20091013011903P</guid></item><item><title>Updated Wiki: Demo Running Instructions</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Demo Running Instructions&amp;version=9</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Demo instructions&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Open Irony_All.sln solution file in Visual Studio.&lt;/li&gt;
&lt;li&gt;Right-click on the project &amp;quot;030.Irony.GrammarExplorer&amp;quot; and select &amp;quot;Set as StartUp project&amp;quot; from the context menu.&lt;/li&gt;
&lt;li&gt;Click Run button on toolbar (F5). Grammar Explorer Window opens.&lt;/li&gt;
&lt;li&gt;Important: if you are launching the Grammar Explorer for the first time after downloading Irony and &lt;/li&gt;&lt;/ul&gt;
    if you see that Grammars combobox is not empty, then make sure you clear: click on the button next to the combobox and select &amp;quot;Remove all&amp;quot;
&lt;ul&gt;&lt;li&gt;If the Grammar combobox on top is empty, click on the button next to it (or right-click the combobox) and select &amp;quot;Add grammar&amp;quot; command. In the file-open window that appears, navigate to (root)\Irony.Samples\bin\debug folder and select Irony.Samples.dll. Application will popup a small window with a list of grammars in selected assembly. Leave all lines checked and click &amp;quot;OK&amp;quot;. The newly added grammars will appear in the grammar combobox.  &lt;/li&gt;
&lt;li&gt;Select a grammar (language) in top combo-box. If you see exception window with error popping up, then go back to previous step and remove all old grammars by selecting &amp;quot;Remove all&amp;quot; command.&lt;/li&gt;
&lt;li&gt;Browse form tabs to see grammar data. &lt;/li&gt;
&lt;li&gt;To parse source code sample, switch to &amp;quot;Test&amp;quot; tab. Click &amp;quot;Load...&amp;quot; button on top of the form. Open file dialog opens.&lt;/li&gt;
&lt;li&gt;Navigate to &amp;lt;root&amp;gt;\Irony.Samples\SourceSamples folder. Select source file appropriate for currently selected grammar. &lt;/li&gt;
&lt;li&gt;Source file contents are loaded into text area in the form. Click Parse button on top of the form. &lt;/li&gt;
&lt;li&gt;The Output Syntax Tree control on the right (in Results tab in the right tab control) would contain a parsed syntax tree.&lt;/li&gt;
&lt;li&gt;If button &amp;quot;Run&amp;quot; is enabled, click it to execute the code. The results are shown in the Output window at the bottom of the form. For Expression Evaluator grammar, the output is the result of the last expression or assignment. Interpreter for Scheme can execute more complex programs found in SourceSamples\Scheme subfolder.  &lt;/li&gt;
&lt;li&gt;Alternatively you can paste or type your own sample program into source text area. &lt;/li&gt;
&lt;li&gt;Repeat for other selections in the Grammar combobox.&lt;/li&gt;&lt;/ul&gt;
Note that Grammar Explorer restores your last language selection and source sample after you close/restart the form. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Tue, 13 Oct 2009 07:40:40 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Demo Running Instructions 20091013074040A</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=62</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET. &lt;br /&gt;Scheme and expression samples are implemented with interpreter mode that allows direct evaluation of simple programs.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" title="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;May 2, 2009. Started a &lt;b&gt;blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;Irony presentation at LangNET 2009 symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;Irony blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sat, 05 Sep 2009 02:41:25 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090905024125A</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=61</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET. &lt;br /&gt;Scheme and expression samples are implemented with interpreter mode that allows direct evaluation of simple programs.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;April 24, 2009. Uploaded a &amp;quot;preview&amp;quot; version of new code. Not everything is working yet, will fix soon. The picture of Grammar Explorer above shows some new features - Parser tracing, choice of Parse method, etc.&lt;/li&gt;
&lt;li&gt;May 2, 2009. Started a &lt;b&gt;blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;Irony presentation at LangNET 2009 symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Wed, 20 May 2009 06:28:56 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090520062856A</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=60</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET. &lt;br /&gt;Scheme and expression samples are implemented with interpreter mode that allows direct evaluation of simple programs.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;April 24, 2009. Uploaded a &amp;quot;preview&amp;quot; version of new code. Not everything is working yet, will fix soon. The picture of Grammar Explorer above shows some new features - Parser tracing, choice of Parse method, etc.&lt;/li&gt;
&lt;li&gt;May 2, 2009. Started a &lt;b&gt;blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;Irony presentations at 2008,2009 Lang.NET symposiums&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Wed, 20 May 2009 06:28:06 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090520062806A</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=59</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET. &lt;br /&gt;Scheme and expression samples are implemented with interpreter mode that allows direct evaluation of simple programs.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;April 24, 2009. Uploaded a &amp;quot;preview&amp;quot; version of new code. Not everything is working yet, will fix soon. The picture of Grammar Explorer above shows some new features - Parser tracing, choice of Parse method, etc.&lt;/li&gt;
&lt;li&gt;May 2, 2009. Started a &lt;b&gt;blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Wed, 20 May 2009 06:27:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090520062708A</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=58</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET. &lt;br /&gt;Scheme and expression samples are implemented with interpreter mode that allows direct evaluation of simple programs.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;April 24, 2009. Uploaded a &amp;quot;preview&amp;quot; version of new code. Not everything is working yet, will fix soon. The picture of Grammar Explorer above shows some new features - Parser tracing, choice of Parse method, etc.&lt;/li&gt;
&lt;li&gt;May 2, 2009. Started a &lt;b&gt;blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=LangNETPresentations"&gt;LangNET 2008&amp;#47;2009 presentations&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Wed, 20 May 2009 06:25:43 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090520062543A</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=57</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET. &lt;br /&gt;Scheme and expression samples are implemented with interpreter mode that allows direct evaluation of simple programs.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;April 24, 2009. Uploaded a &amp;quot;preview&amp;quot; version of new code. Not everything is working yet, will fix soon. The picture of Grammar Explorer above shows some new features - Parser tracing, choice of Parse method, etc.&lt;/li&gt;
&lt;li&gt;May 2, 2009. Started a &lt;b&gt;blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=LangNETPresentations"&gt;LangNET 2008 presentations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Source%20changes%20history"&gt;Source changes history&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sat, 02 May 2009 17:58:32 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090502055832P</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=56</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET. &lt;br /&gt;Scheme and expression samples are implemented with interpreter mode that allows direct evaluation of simple programs.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;April 24, 2009. Uploaded a &amp;quot;preview&amp;quot; version of new code. Not everything is working yet, will fix soon. The picture of Grammar Explorer above shows some new features - Parser tracing, choice of Parse method, etc.&lt;/li&gt;
&lt;li&gt;May 2, 2009. Started my blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. The first post is about changes in April code update. Enjoy it!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=LangNETPresentations"&gt;LangNET 2008 presentations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Source%20changes%20history"&gt;Source changes history&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sat, 02 May 2009 08:21:15 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090502082115A</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=55</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET. &lt;br /&gt;Scheme and expression samples are implemented with interpreter mode that allows direct evaluation of simple programs.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;April 24, 2009. Uploaded a &amp;quot;preview&amp;quot; version of new code. Not everything is working yet, will fix soon. The picture of Grammar Explorer above shows some new features - Parser tracing, choice of Parse method, etc.&lt;/li&gt;
&lt;li&gt;May 2, 2009. Started my blog about Irony: &lt;a href="http://irony-roman.blogspot.com/" class="externalLink"&gt;http://irony-roman.blogspot.com/&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. The first post is about changes in April code update. &lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=LangNETPresentations"&gt;LangNET 2008 presentations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Source%20changes%20history"&gt;Source changes history&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sat, 02 May 2009 08:17:56 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090502081756A</guid></item><item><title>Updated Wiki: Home</title><link>http://irony.codeplex.com/Wiki/View.aspx?title=Home&amp;version=54</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Irony&lt;/b&gt; is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction. &lt;br /&gt;Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process. See the &lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=expression%20grammar%20sample"&gt;expression grammar sample&lt;/a&gt; for an example of grammar definition in c# class, and using it in a working parser. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Release&lt;/b&gt;&lt;br /&gt;The initial release contains implementation of compiler front-end modules - scanner and LALR(1) parser. We provide several test grammars and parser implementations based on them: a grammar for simple arithmetic expressions and simplified grammars for c#, Scheme, Script.NET. &lt;br /&gt;Scheme and expression samples are implemented with interpreter mode that allows direct evaluation of simple programs.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=irony&amp;DownloadId=66532" alt="irony_GrammarExplorer2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;System Requirements&lt;/b&gt;&lt;br /&gt;Windows XP/Vista, .NET Framework 3.5, Visual Studio 2008&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project News&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The first implementation of interpreter/runtime infrastructure is available in changeset 10633&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/recipes/YourFirstDSL.aspx" class="externalLink"&gt;Writing your first Domain-Specific Language&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - two articles by Daniel Flower at CodeProject.com. An excellent introduction to using Irony for parsing &amp;quot;little&amp;quot; application-specific languages - DSLs. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/" class="externalLink"&gt;A Google-like Full Text Search&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; - an article by Michael Coles about Google-to-SQL Server full-text search query converter based on Irony. &lt;/li&gt;
&lt;li&gt;10/27/2008 - Irony supports syntax highlighting. The first draft implementation of syntax colorizer is submitted in changset 13969. &lt;/li&gt;
&lt;li&gt;11/25/2008 - Added JSON parser sample. &lt;/li&gt;
&lt;li&gt;02/10/2009 - new article on CodeProject: &lt;a href="http://www.codeproject.com/KB/recipes/VSLanguageService.aspx" class="externalLink"&gt;Writing your first Visual Studio Language Service&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; by Ben Morrison about using Irony for language integration into Visual Studio.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;On April 14-16 Microsoft is hosting &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/b&gt; I (Roman, Irony coordinator) will be making 2 short presentations there, one of them about Irony. I will talk about project status and latest developments. Have a look at symposium agenda - quite interesting stuff will be there. Sign up if you can come, or visit the site later - MS will probably publish the presentations (audio and slides) as they did in previous years. &lt;/li&gt;
&lt;li&gt;April 20 - Recordings of presentations at &lt;a href="http://langnetsymposium.com/" class="externalLink"&gt;2009 Lang.NET symposium&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; are available online. I've made a couple of presentations there, the first one about Irony. Watch it, come back with comments. Watch other recordings - very interesting stuff!   &lt;/li&gt;
&lt;li&gt;April 24, 2009. Uploaded a &amp;quot;preview&amp;quot; version of new code. Not everything is working yet, will fix soon. The picture of Grammar Explorer above shows some new features - Parser tracing, choice of Parse method, etc.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;More information&lt;/b&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Demo%20Running%20Instructions"&gt;Demo Running Instructions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Expression%20Grammar%20sample"&gt;Expression Grammar sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=LangNETPresentations"&gt;LangNET 2008 presentations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://irony.codeplex.com/Wiki/View.aspx?title=Source%20changes%20history"&gt;Source changes history&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sat, 25 Apr 2009 16:15:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090425041538P</guid></item></channel></rss>