<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>Irony - .NET Language Implementation Kit.</title><link>http://irony.codeplex.com/project/feeds/rss</link><description>Irony&amp;#39;s Scanner and LALR&amp;#40;1&amp;#41; Parser are controlled by the target language grammar encoded directly in c&amp;#35; using BNF-like expressions through operator overloading. No code generation - no YACCi stuff&amp;#33;          </description><item><title>New Post: Looking for a tutorial</title><link>http://irony.codeplex.com/discussions/444571</link><description>&lt;div style="line-height: normal;"&gt;Hello,&lt;br /&gt;
&lt;br /&gt;
Thank you for your reply. I am trying to generate an sql script based on the user input. The old tutorials were really helpful, but the new source code seems a bit complicated without any documentation. Basically, I had the following:&lt;br /&gt;
&lt;br /&gt;
A compiler class with the following function: &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;   public static string Compile(string sourceCode)
    {
        // create a compiler from the grammar
        FLGrammar grammar = new FLGrammar();
        LanguageCompiler compiler = new LanguageCompiler(grammar);

        // Attempt to compile into an Abstract Syntax Tree. Because FLGrammar
        // defines the root node as ProgramNode, that is what will be returned.
        // This happens to implement ILangGenerator, which is what we need.
        ILangGenerator program = (ILangGenerator)compiler.Parse(sourceCode);
        if (program == null || compiler.Context.Errors.Count &amp;gt; 0)
        {
            // Didn't compile.  Generate an error message.
            SyntaxError error = compiler.Context.Errors[0];
            string location = string.Empty;
            if (error.Location.Line &amp;gt; 0 &amp;amp;&amp;amp; error.Location.Column &amp;gt; 0)
            {
                location = &amp;quot;Line &amp;quot; + (error.Location.Line + 1) + &amp;quot;, column &amp;quot; + (error.Location.Column + 1);
            }
            string message = location + &amp;quot;: &amp;quot; + error.Message + &amp;quot;:&amp;quot; + Environment.NewLine;
            message += sourceCode.Split('\n')[error.Location.Line];

            throw new CompilationException(message);
        }

        // now just instruct the compilation of to javascript
        StringBuilder js = new StringBuilder();
        program.GenerateScript(js);
        return js.ToString();

    }
&lt;/code&gt;&lt;/pre&gt;

A grammar class:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;    public FLGrammar()
    {

        #region Initial setup of the grammar

        this.CaseSensitive = false;

        // define all the non-terminals
        var program = new NonTerminal(&amp;quot;program&amp;quot;, typeof(ProgramNode));
        var statementList = new NonTerminal(&amp;quot;statementList&amp;quot;, typeof(StatementListNode));
        var condition = new NonTerminal(&amp;quot;statement&amp;quot;, typeof(ConditionNode));

        var oper = new NonTerminal(&amp;quot;operator&amp;quot;, typeof(OperatorNode));

        // define all the terminals
        var variable = new IdentifierTerminal(&amp;quot;variable&amp;quot;);
        variable.AddKeywords(&amp;quot;where&amp;quot;,&amp;quot;set&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;if&amp;quot;, &amp;quot;freight&amp;quot;, &amp;quot;cost&amp;quot;, &amp;quot;is&amp;quot;, &amp;quot;loop&amp;quot;, &amp;quot;through&amp;quot;, &amp;quot;order&amp;quot;);
        var number = new NumberLiteral(&amp;quot;number&amp;quot;);
        var stringLiteral = new StringLiteral(&amp;quot;string&amp;quot;, &amp;quot;\&amp;quot;&amp;quot;, ScanFlags.None);

        // remove uninteresting nodes from the AST (note: in current version of Irony,
        // keywords added to the variable cannot be registered as punctuation).
        this.RegisterPunctuation(&amp;quot;;&amp;quot;, &amp;quot;[&amp;quot;, &amp;quot;]&amp;quot;, &amp;quot;(&amp;quot;, &amp;quot;)&amp;quot;);

        // specify the non-terminal which is the root of the AST
        this.Root = program;

        #endregion

        #region Define the grammar

        //&amp;lt;Program&amp;gt; ::= &amp;lt;StatementList&amp;gt; &amp;lt;FreightDeclaration&amp;gt;
        program.Rule = statementList;

        //&amp;lt;StatementList&amp;gt; ::= &amp;lt;Statement&amp;gt;*
        statementList.Rule = Symbol(&amp;quot;where&amp;quot;) + condition;

        //&amp;lt;condition&amp;gt;::= &amp;lt;string&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;string&amp;gt; | &amp;lt;condition&amp;gt; &amp;lt;operator&amp;gt; &amp;lt;condition&amp;gt; | “(“  &amp;lt;condition&amp;gt; “)”

        //&amp;lt;Statement&amp;gt; ::= &amp;lt;SetVariable&amp;gt; &amp;quot;;&amp;quot; | &amp;lt;IfStatement&amp;gt; | &amp;lt;OrderLoop&amp;gt; | &amp;lt;Expression&amp;gt; &amp;quot;;&amp;quot;
        condition.Rule = condition + oper + condition | &amp;quot;(&amp;quot; + condition + &amp;quot;)&amp;quot; | variable | 
            number | stringLiteral;




        //&amp;lt;BinaryOperator&amp;gt; ::= &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot; | &amp;quot;*&amp;quot; | &amp;quot;/&amp;quot; | &amp;quot;&amp;lt;&amp;quot; | &amp;quot;&amp;gt;&amp;quot; | &amp;quot;&amp;lt;=&amp;quot; | &amp;quot;&amp;gt;=&amp;quot; | &amp;quot;is&amp;quot;
        oper.Rule = Symbol(&amp;quot;+&amp;quot;) | &amp;quot;-&amp;quot; | &amp;quot;*&amp;quot; | &amp;quot;/&amp;quot; | &amp;quot;&amp;lt;&amp;quot; | &amp;quot;&amp;gt;&amp;quot; | &amp;quot;&amp;lt;=&amp;quot; | &amp;quot;&amp;gt;=&amp;quot; | &amp;quot;is&amp;quot; | 
            &amp;quot;=&amp;quot; | &amp;quot;like&amp;quot; | &amp;quot;and&amp;quot; | &amp;quot;or&amp;quot;;


        #endregion

    }
&lt;/code&gt;&lt;/pre&gt;

A class for each node, to generate the related SQL statements. Each class inherits AstNode, and implements a Generator interface which has a virtual function for generating scripts. &lt;br /&gt;
&lt;br /&gt;
With the new Irony source code, I have looked at the ExpressionEvaluatorGrammar example. I can see three classes for the grammar:&lt;br /&gt;
ExpressionEvaluator, ExpressionEvaluatorGrammar &amp;amp; ExpressionEvaluatorRuntime. In addition to that, there are are classes for AstNode. This time, these classes only inherit from AstNode. I dont know where should I implement the logic for generating the SQL script. Should it be in the overriden Init function?&lt;br /&gt;
&lt;br /&gt;
Also it seems the ExpressionEvaluator example makes use of several LanguageRuntime classes: LanguageRuntime, LanguageRuntime_Binding, LanguageRuntime_OpDispatch, LanguageRuntime_OpDispatch_Init. Do I need to implement all these three classes to achieve what I am looking for?&lt;br /&gt;
&lt;br /&gt;
Please help. Thank you.&lt;br /&gt;
&lt;/div&gt;</description><author>sherif234</author><pubDate>Thu, 23 May 2013 08:38:30 GMT</pubDate><guid isPermaLink="false">New Post: Looking for a tutorial 20130523083830A</guid></item><item><title>New Post: Looking for a tutorial</title><link>http://irony.codeplex.com/discussions/444571</link><description>&lt;div style="line-height: normal;"&gt;Currently, the best tutorials are the sample projects in the source code. Unfortunately, there are no step-by-step tutorials as Roman has been swamped, but I'm sure he would accept user submissions with regards to this.&lt;br /&gt;
&lt;br /&gt;
Sounds like you are already off to a good start with code previously designed around the old Irony architecture.  I am not sure how to your request for help on the current Irony without some context to your issues.  If you could, please post some of your old code, and the community may be able to help.&lt;br /&gt;
&lt;/div&gt;</description><author>MindCore</author><pubDate>Wed, 22 May 2013 19:13:14 GMT</pubDate><guid isPermaLink="false">New Post: Looking for a tutorial 20130522071314P</guid></item><item><title>New Post: Looking for a tutorial</title><link>http://irony.codeplex.com/discussions/444571</link><description>&lt;div style="line-height: normal;"&gt;Hello,&lt;br /&gt;
&lt;br /&gt;
I have been struggling to find a step by step tutorial for the latest version of Irony. I can only find the two posts created by Daniel Flower on Code project. Yes they are good, but unfortunately, it is only applicable to the old version of Irony. &lt;br /&gt;
&lt;br /&gt;
I am trying to generate/build a string (sql statements) based on the user input. Please help. Thank you.&lt;br /&gt;
&lt;/div&gt;</description><author>sherif234</author><pubDate>Wed, 22 May 2013 10:56:03 GMT</pubDate><guid isPermaLink="false">New Post: Looking for a tutorial 20130522105603A</guid></item><item><title>New Post: System.NullReferenceException in BuildAst</title><link>http://irony.codeplex.com/discussions/444049</link><description>&lt;div style="line-height: normal;"&gt;Hi Roman, thanks for your reply.&lt;br /&gt;
&lt;br /&gt;
I've started by stripping my grammar to bare minimum (only numbers and operators) but had the same issue. During debugging I found that DefaultLiteralNodeType was null and found &lt;a href="http://irony.codeplex.com/discussions/346530" rel="nofollow"&gt;this discussion&lt;/a&gt; that explained what was going on. Overriding BuildAst() did the trick and I got the basic grammar working. I'll start adding more stuff to my grammar and see what happens. At least I've got slightly better understanding of how it all works now.&lt;br /&gt;
&lt;br /&gt;
Thanks!&lt;br /&gt;
&lt;/div&gt;</description><author>jarin</author><pubDate>Sat, 18 May 2013 17:52:28 GMT</pubDate><guid isPermaLink="false">New Post: System.NullReferenceException in BuildAst 20130518055228P</guid></item><item><title>New Post: System.NullReferenceException in BuildAst</title><link>http://irony.codeplex.com/discussions/444049</link><description>&lt;div style="line-height: normal;"&gt;at first look, you are missing AST node type for colname terminal. Stop in debugger on exception and look around on data involved (which non-terminal/terminal is there). But this is my guess - colname. You have to provide AstNode implementation - a class that knows how to interpret the colname at runtime. &lt;br /&gt;
Let me know if you're stuck, I may be able to investigate in details later&lt;br /&gt;
Roman&lt;br /&gt;
&lt;/div&gt;</description><author>rivantsov</author><pubDate>Sat, 18 May 2013 04:11:13 GMT</pubDate><guid isPermaLink="false">New Post: System.NullReferenceException in BuildAst 20130518041113A</guid></item><item><title>New Post: System.NullReferenceException in BuildAst</title><link>http://irony.codeplex.com/discussions/444049</link><description>&lt;div style="line-height: normal;"&gt;I've got very simple grammar adapted from &amp;quot;Writing a calculator in C# using Irony&amp;quot; sample (see below) and parsing works fine, however when I add &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;LanguageFlags = LanguageFlags.CreateAst;&lt;/code&gt;&lt;/pre&gt;

to generate AST I get following error in Parser Output tab:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;AstNodeType or AstNodeCreator is not set on non-terminals: Irony.Parsing.BnfTermList. Either set Term.AstConfig.NodeType, or provide default values in AstContext.&lt;/code&gt;&lt;/pre&gt;

and an exception in Irony Grammar Explorer:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;System.NullReferenceException: Object reference not set to an instance of an object.
   at Irony.Ast.AstBuilder.BuildAst(ParseTreeNode parseNode) in C:\Programming\Irony_2013_03_10\Irony_2013_03_10\Irony\Ast\AstBuilder.cs:line 97
   at Irony.Ast.AstBuilder.BuildAst(ParseTreeNode parseNode) in C:\Programming\Irony_2013_03_10\Irony_2013_03_10\Irony\Ast\AstBuilder.cs:line 86
   at Irony.Ast.AstBuilder.BuildAst(ParseTree parseTree) in C:\Programming\Irony_2013_03_10\Irony_2013_03_10\Irony\Ast\AstBuilder.cs:line 38
   at Irony.Parsing.Grammar.BuildAst(LanguageData language, ParseTree parseTree) in C:\Programming\Irony_2013_03_10\Irony_2013_03_10\Irony\Parsing\Grammar\Grammar.cs:line 499
   at Irony.Parsing.Parser.Parse(String sourceText, String fileName) in C:\Programming\Irony_2013_03_10\Irony_2013_03_10\Irony\Parsing\Parser\Parser.cs:line 88
   at Irony.GrammarExplorer.fmGrammarExplorer.ParseSample() in C:\Programming\Irony_2013_03_10\Irony_2013_03_10\Irony.GrammarExplorer\fmGrammarExplorer.cs:line 359
   at Irony.GrammarExplorer.fmGrammarExplorer.btnParse_Click(Object sender, EventArgs e) in C:\Programming\Irony_2013_03_10\Irony_2013_03_10\Irony.GrammarExplorer\fmGrammarExplorer.cs:line 507
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message&amp;amp; m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message&amp;amp; m)
   at System.Windows.Forms.ButtonBase.WndProc(Message&amp;amp; m)
   at System.Windows.Forms.Button.WndProc(Message&amp;amp; m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)&lt;/code&gt;&lt;/pre&gt;

My grammar is:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;public class TestGrammar1 : Grammar
    {
        public TestGrammar1 () : base(false)
        {
            var number = new NumberLiteral(&amp;quot;number&amp;quot;, NumberOptions.AllowSign | NumberOptions.AllowStartEndDot);
            var fnname = new IdentifierTerminal(&amp;quot;fnname&amp;quot;);
            
            var colname = new StringLiteral(&amp;quot;colname&amp;quot;);
            colname.AddStartEnd(&amp;quot;[&amp;quot;, &amp;quot;]&amp;quot;, StringOptions.None);

            var expression = new NonTerminal(&amp;quot;expression&amp;quot;);
            var binexpr = new NonTerminal(&amp;quot;binexpr&amp;quot;, typeof(BinaryOperationNode));
            var parexpr = new NonTerminal(&amp;quot;parexpr&amp;quot;);
            var fncall = new NonTerminal(&amp;quot;fncall&amp;quot;, typeof(FunctionCallNode));
            var binop = new NonTerminal(&amp;quot;binop&amp;quot;, &amp;quot;operator&amp;quot;);

            expression.Rule = parexpr | binexpr | number | colname | fncall;
            parexpr.Rule = &amp;quot;(&amp;quot; + expression + &amp;quot;)&amp;quot;;
            binexpr.Rule = expression + binop + expression;
            binop.Rule = ToTerm(&amp;quot;+&amp;quot;) | &amp;quot;-&amp;quot; | &amp;quot;/&amp;quot; | &amp;quot;*&amp;quot;;
            fncall.Rule = fnname + &amp;quot;(&amp;quot; + expression + &amp;quot;)&amp;quot;;
            this.Root = expression;

            MarkPunctuation(&amp;quot;(&amp;quot;,&amp;quot;)&amp;quot;);

            RegisterOperators(1, &amp;quot;+&amp;quot;, &amp;quot;-&amp;quot;);
            RegisterOperators(2, &amp;quot;*&amp;quot;, &amp;quot;/&amp;quot;);
            AddOperatorReportGroup(&amp;quot;operator&amp;quot;);
            
            MarkTransient(parexpr, expression, binop);
            LanguageFlags = LanguageFlags.CreateAst;
        }
    }&lt;/code&gt;&lt;/pre&gt;

My test expression:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;sum([a])&lt;/code&gt;&lt;/pre&gt;

Can somebody please help me figure out what's wrong with my grammar?&lt;br /&gt;
Thanks!&lt;br /&gt;
&lt;/div&gt;</description><author>jarin</author><pubDate>Fri, 17 May 2013 13:24:11 GMT</pubDate><guid isPermaLink="false">New Post: System.NullReferenceException in BuildAst 20130517012411P</guid></item><item><title>New Post: Fatal error in code colorizer.Colorizing has been disabled</title><link>http://irony.codeplex.com/discussions/438465</link><description>&lt;div style="line-height: normal;"&gt;hi&lt;br /&gt;
sorry, do not have much time right now, it would be a few days&lt;br /&gt;
Roman&lt;br /&gt;
&lt;/div&gt;</description><author>rivantsov</author><pubDate>Tue, 14 May 2013 21:24:21 GMT</pubDate><guid isPermaLink="false">New Post: Fatal error in code colorizer.Colorizing has been disabled 20130514092421P</guid></item><item><title>New Post: Fatal error in code colorizer.Colorizing has been disabled</title><link>http://irony.codeplex.com/discussions/438465</link><description>&lt;div style="line-height: normal;"&gt;As-Salam-wa-alicum&lt;br /&gt;
&lt;br /&gt;
Sir,&lt;br /&gt;
&lt;br /&gt;
Thank you very much for your effort but the way you advice need so many work at comiletime to determine the actual thing because of its generality &lt;br /&gt;
and it is possible to make it a little more specific.I did it but when I try to refactor emofAttributeDiclaration,functionSignatureBody and ArrayType so &lt;br /&gt;
many conflict come.Please help me here.My grammar file and the test file is &lt;a href="http://ge.tt/67HuuRg" rel="nofollow"&gt;here&lt;/a&gt;  By the way do you have the original grammar&lt;br /&gt;
file on which you do work to fix conflict?&lt;br /&gt;
&lt;br /&gt;
Thank you very much again for reading my mail by spending your valuable time and working on it.&lt;br /&gt;
&lt;br /&gt;
With regards&lt;br /&gt;
Nadvi&lt;br /&gt;
&lt;/div&gt;</description><author>nadvi</author><pubDate>Sun, 12 May 2013 15:10:37 GMT</pubDate><guid isPermaLink="false">New Post: Fatal error in code colorizer.Colorizing has been disabled 20130512031037P</guid></item><item><title>New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them</title><link>http://irony.codeplex.com/discussions/441610</link><description>&lt;div style="line-height: normal;"&gt;Thanks for the clue! I've got it all figured out. Here's a little documentation for anyone else dealing with Reduce-Reduce errors:&lt;br /&gt;
&lt;br /&gt;
You can only have one of each RValue (right-hand side of the arror value) in the &amp;quot;Reduce Items&amp;quot; section. If you have more than one it can't decide which non-terminal to use in a given scenario. (It likely doesn't matter which one gets used; I guess Irony doesn't want to take any chances.)&lt;br /&gt;
&lt;br /&gt;
This won't work as all child trees support an Empty:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;foreach(var group in groups)
{
   ....
   var myRule = ....;
   myRule.Rule = MakeStarRule(myRule, eachRowOfMyRule);

   if(program.Rule == null)
       program.Rule = myRule;
   else program.Rule |= myRule;
}
&lt;/code&gt;&lt;/pre&gt;

You have to do it like this instead:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;foreach(var group in groups)
{
   ....
   var myRule = ....;
   if(program.Rule == null)
      myRule.Rule = MakeStarRule(myRule, eachRowOfMyRule);
   else
      myRule.Rule = MakePlusRule(myRule, eachRowOfMyRule);

   if(program.Rule == null)
       program.Rule = myRule;
   else program.Rule |= myRule;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;</description><author>brantheman</author><pubDate>Fri, 26 Apr 2013 21:45:58 GMT</pubDate><guid isPermaLink="false">New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them 20130426094558P</guid></item><item><title>New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them</title><link>http://irony.codeplex.com/discussions/441610</link><description>&lt;div style="line-height: normal;"&gt;my guess is that you have several optional sections, optionally (!) included, and parser does not know how to interpret an empty file. To say more, I need to see the grammar&lt;br /&gt;
&lt;/div&gt;</description><author>rivantsov</author><pubDate>Fri, 26 Apr 2013 20:55:00 GMT</pubDate><guid isPermaLink="false">New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them 20130426085500P</guid></item><item><title>New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them</title><link>http://irony.codeplex.com/discussions/441610</link><description>&lt;div style="line-height: normal;"&gt;Here is the output from Grammar Explorer. I assume that I look in the &amp;quot;Reduce Items&amp;quot; section, but I don't know what to look for there.&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;State S0 (Inadequate)
  Reduce-reduce conflicts on inputs: EOF LF
  Shift items:
    Program' -&amp;gt; ·Program EOF 
    Program -&amp;gt; ·StartSection.grp1 
    StartSection.grp1 -&amp;gt; ·StartSectionRow.grp1+ 
    StartSectionRow.grp1+ -&amp;gt; ·StartSectionRow.grp1+ StartSectionRow.grp1 
    StartSectionRow.grp1+ -&amp;gt; ·StartSectionRow.grp1 
    StartSectionRow.grp1 -&amp;gt; ·OptionalTelemetryTriples.grp1 LF 
    OptionalTelemetryTriples.grp1 -&amp;gt; ·TelemetryTriples.grp1 
    TelemetryTriples.grp1 -&amp;gt; ·Telemetry 
    Telemetry -&amp;gt; ·until Unnamed0 Telemetry.Operator Telemetry.Value OptionalMetric 
    TelemetryTriples.grp1 -&amp;gt; ·Telemetry 
    Telemetry -&amp;gt; ·until Unnamed1 Telemetry.Operator Telemetry.Value OptionalMetric 
    StartSectionRow.grp1 -&amp;gt; ·ActionTriplet.grp1 OptionalTelemetryTriples.grp1 LF 
    ActionTriplet.grp1 -&amp;gt; ·ActionSetTriples.grp1 
    ActionSetTriples.grp1 -&amp;gt; ·Action 
    Action -&amp;gt; ·set Unnamed2 at Action.Value OptionalMetric 
    ActionSetTriples.grp1 -&amp;gt; ·Action 
    Action -&amp;gt; ·set Unnamed3 at Action.Value OptionalMetric 
    ActionTriplet.grp1 -&amp;gt; ·ActionIncTriples.grp1 
    ActionIncTriples.grp1 -&amp;gt; ·Action 
    Action -&amp;gt; ·inc Unnamed4 by Action.Value OptionalMetric 
    ActionIncTriples.grp1 -&amp;gt; ·Action 
    Action -&amp;gt; ·inc Unnamed5 by Action.Value OptionalMetric 
    ActionTriplet.grp1 -&amp;gt; ·ActionDecTriples.grp1 
    ActionDecTriples.grp1 -&amp;gt; ·Action 
    Action -&amp;gt; ·dec Unnamed6 by Action.Value OptionalMetric 
    ActionDecTriples.grp1 -&amp;gt; ·Action 
    Action -&amp;gt; ·dec Unnamed7 by Action.Value OptionalMetric 
    ActionTriplet.grp1 -&amp;gt; ·ActionMulTriples.grp1 
    ActionMulTriples.grp1 -&amp;gt; ·Action 
    Action -&amp;gt; ·mul Unnamed8 by Action.Value OptionalMetric 
    ActionMulTriples.grp1 -&amp;gt; ·Action 
    Action -&amp;gt; ·mul Unnamed9 by Action.Value OptionalMetric 
    Program -&amp;gt; ·StartSection.grp2 
    StartSection.grp2 -&amp;gt; ·StartSectionRow.grp2+ 
    StartSectionRow.grp2+ -&amp;gt; ·StartSectionRow.grp2+ StartSectionRow.grp2 
    StartSectionRow.grp2+ -&amp;gt; ·StartSectionRow.grp2 
    StartSectionRow.grp2 -&amp;gt; ·OptionalTelemetryTriples.grp2 LF 
    OptionalTelemetryTriples.grp2 -&amp;gt; ·TelemetryTriples.grp2 
    TelemetryTriples.grp2 -&amp;gt; ·Telemetry 
    Telemetry -&amp;gt; ·until Unnamed10 Telemetry.Operator Tail OptionalMetric 
    TelemetryTriples.grp2 -&amp;gt; ·Telemetry 
    Telemetry -&amp;gt; ·until Unnamed11 Telemetry.Operator Telemetry.Value OptionalMetric 
    StartSectionRow.grp2 -&amp;gt; ·ActionTriplet.grp2 OptionalTelemetryTriples.grp2 LF 
    ActionTriplet.grp2 -&amp;gt; ·ActionSetTriples.grp2 
    ActionSetTriples.grp2 -&amp;gt; ·Action 
    Action -&amp;gt; ·set Unnamed12 at Action.Value OptionalMetric 
    ActionTriplet.grp2 -&amp;gt; ·ActionIncTriples.grp2 
    ActionIncTriples.grp2 -&amp;gt; ·Action 
    Action -&amp;gt; ·inc Unnamed13 by Action.Value OptionalMetric 
    ActionTriplet.grp2 -&amp;gt; ·ActionDecTriples.grp2 
    ActionDecTriples.grp2 -&amp;gt; ·Action 
    Action -&amp;gt; ·dec Unnamed14 by Action.Value OptionalMetric 
    ActionTriplet.grp2 -&amp;gt; ·ActionMulTriples.grp2 
    ActionMulTriples.grp2 -&amp;gt; ·Action 
    Action -&amp;gt; ·mul Unnamed15 by Action.Value OptionalMetric 
  Reduce items:
    StartSection.grp1 -&amp;gt; · [EOF]
    OptionalTelemetryTriples.grp1 -&amp;gt; · [LF]
    StartSection.grp2 -&amp;gt; · [EOF]
    OptionalTelemetryTriples.grp2 -&amp;gt; · [LF]
  Transitions: Program-&amp;gt;S1, StartSection.grp1-&amp;gt;S2, StartSectionRow.grp1+-&amp;gt;S3, StartSectionRow.grp1-&amp;gt;S4, OptionalTelemetryTriples.grp1-&amp;gt;S5, TelemetryTriples.grp1-&amp;gt;S6, Telemetry-&amp;gt;S7, until-&amp;gt;S8, Telemetry-&amp;gt;S9, ActionTriplet.grp1-&amp;gt;S10, ActionSetTriples.grp1-&amp;gt;S11, Action-&amp;gt;S12, set-&amp;gt;S13, Action-&amp;gt;S14, ActionIncTriples.grp1-&amp;gt;S15, Action-&amp;gt;S16, inc-&amp;gt;S17, Action-&amp;gt;S18, ActionDecTriples.grp1-&amp;gt;S19, Action-&amp;gt;S20, dec-&amp;gt;S21, Action-&amp;gt;S22, ActionMulTriples.grp1-&amp;gt;S23, Action-&amp;gt;S24, mul-&amp;gt;S25, Action-&amp;gt;S26, StartSection.grp2-&amp;gt;S27, StartSectionRow.grp2+-&amp;gt;S28, StartSectionRow.grp2-&amp;gt;S29, OptionalTelemetryTriples.grp2-&amp;gt;S30, TelemetryTriples.grp2-&amp;gt;S31, Telemetry-&amp;gt;S32, Telemetry-&amp;gt;S33, ActionTriplet.grp2-&amp;gt;S34, ActionSetTriples.grp2-&amp;gt;S35, Action-&amp;gt;S36, ActionIncTriples.grp2-&amp;gt;S37, Action-&amp;gt;S38, ActionDecTriples.grp2-&amp;gt;S39, Action-&amp;gt;S40, ActionMulTriples.grp2-&amp;gt;S41, Action-&amp;gt;S42
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;</description><author>brantheman</author><pubDate>Fri, 26 Apr 2013 20:33:40 GMT</pubDate><guid isPermaLink="false">New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them 20130426083340P</guid></item><item><title>Commented Unassigned: crash with rv null in ComputeProductionFlags [9881]</title><link>http://irony.codeplex.com/workitem/9881</link><description>I got the crash &amp;#40;shown in the attached screenshot&amp;#41;.&lt;br /&gt;Comments: I think you&amp;#39;ll have to fix both Op_Plus and Op_Pipe to handle null inputs.</description><author>brantheman</author><pubDate>Fri, 26 Apr 2013 19:58:15 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: crash with rv null in ComputeProductionFlags [9881] 20130426075815P</guid></item><item><title>Commented Unassigned: crash with rv null in ComputeProductionFlags [9881]</title><link>http://irony.codeplex.com/workitem/9881</link><description>I got the crash &amp;#40;shown in the attached screenshot&amp;#41;.&lt;br /&gt;Comments: yeah, I see the problem. I think the best place to add this is in overload of &amp;#34;&amp;#43;&amp;#34; operator. Will add in the next code update&amp;#10;thanks&amp;#10;Roman</description><author>rivantsov</author><pubDate>Fri, 26 Apr 2013 17:27:43 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: crash with rv null in ComputeProductionFlags [9881] 20130426052743P</guid></item><item><title>New Post: Fatal error in code colorizer.Colorizing has been disabled</title><link>http://irony.codeplex.com/discussions/438465</link><description>&lt;div style="line-height: normal;"&gt;Man, it's time to take over the thing, rollup your sleeves and start pushing it. I've fixed all the conflicts (the most serious ones), so now you can move in small increments. Just start modifying this parameter definition when it is a 'lambda' to bring back the old code I removed - as far as I understand this is the problem now&lt;br /&gt;
Try it, read something about LALR parsing and about conflicts, try it again. Let me know if you're stuck&lt;br /&gt;
Roman&lt;br /&gt;
&lt;/div&gt;</description><author>rivantsov</author><pubDate>Fri, 26 Apr 2013 17:16:58 GMT</pubDate><guid isPermaLink="false">New Post: Fatal error in code colorizer.Colorizing has been disabled 20130426051658P</guid></item><item><title>New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them</title><link>http://irony.codeplex.com/discussions/441610</link><description>&lt;div style="line-height: normal;"&gt;well sorry for your lunch, but - don't quite get what's the problem with the conflict? did you try to double-click on conflict message in Grammar Explorer? It will bring you to the state printout, which show you all.&lt;br /&gt;
About NewLineBeforeEOF - this has no impact on parser construction. It is at runtime, when parsing, the scanner injects NewLine before sending EOF to parser, just to adjust for source files that have no final line-break, but the language is line-based. &lt;br /&gt;
&lt;/div&gt;</description><author>rivantsov</author><pubDate>Fri, 26 Apr 2013 17:13:11 GMT</pubDate><guid isPermaLink="false">New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them 20130426051311P</guid></item><item><title>New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them</title><link>https://irony.codeplex.com/discussions/441610</link><description>&lt;div style="line-height: normal;"&gt;&amp;quot;Reduce-reduce conflict. State S0, lookaheads: EOF LF. Selected reduce on first production in conflict set. (S0)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
My grammar file is only 170 lines long, but I still have absolutely no idea where to even start with an error like this. Can we put the nearest non-terminal name in the error somewhere?&lt;br /&gt;
&lt;br /&gt;
Also, I thought Irony treated EOF as an alternate for LF if I used this: LanguageFlags |= LanguageFlags.NewLineBeforeEOF. Is that not true? Why would it have a conflict between the two?&lt;br /&gt;
&lt;/div&gt;</description><author>brantheman</author><pubDate>Thu, 25 Apr 2013 21:31:33 GMT</pubDate><guid isPermaLink="false">New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them 20130425093133P</guid></item><item><title>New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them</title><link>http://irony.codeplex.com/discussions/441610</link><description>&lt;div style="line-height: normal;"&gt;&amp;quot;Reduce-reduce conflict. State S0, lookaheads: EOF LF. Selected reduce on first production in conflict set. (S0)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
My grammar file is only 170 lines long, but I still have absolutely no idea where to even start with an error like this. Can we put the nearest non-terminal name in the error somewhere?&lt;br /&gt;
&lt;br /&gt;
Also, I thought Irony treated EOF as an alternate for LF if I used this: LanguageFlags |= LanguageFlags.NewLineBeforeEOF. Is that not true? Why would it have a conflict between the two?&lt;br /&gt;
&lt;/div&gt;</description><author>brantheman</author><pubDate>Thu, 25 Apr 2013 21:31:33 GMT</pubDate><guid isPermaLink="false">New Post: "Reduce-reduce" errors eat my lunch; we really need some context on them 20130425093133P</guid></item><item><title>Commented Unassigned: crash with rv null in ComputeProductionFlags [9881]</title><link>http://irony.codeplex.com/workitem/9881</link><description>I got the crash &amp;#40;shown in the attached screenshot&amp;#41;.&lt;br /&gt;Comments: I find that there was a problem in my code. I was using the &amp;#124;&amp;#61; operator on a rule that had not been initialized. It would be nice if that case was handled appropriately. The &amp;#124; operator should return the non-null item out of two.</description><author>brantheman</author><pubDate>Thu, 25 Apr 2013 21:15:54 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: crash with rv null in ComputeProductionFlags [9881] 20130425091554P</guid></item><item><title>Commented Unassigned: crash with rv null in ComputeProductionFlags [9881]</title><link>http://irony.codeplex.com/workitem/9881</link><description>I got the crash &amp;#40;shown in the attached screenshot&amp;#41;.&lt;br /&gt;Comments: At the point of the crash the parent CreateProduction lvalue &amp;#61; &amp;#123;StartSectionRow.grp1&amp;#125;</description><author>brantheman</author><pubDate>Thu, 25 Apr 2013 21:10:21 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: crash with rv null in ComputeProductionFlags [9881] 20130425091021P</guid></item><item><title>Commented Unassigned: crash with rv null in ComputeProductionFlags [9881]</title><link>http://irony.codeplex.com/workitem/9881</link><description>I got the crash &amp;#40;shown in the attached screenshot&amp;#41;.&lt;br /&gt;Comments: I&amp;#39;ve attached my grammar also.</description><author>brantheman</author><pubDate>Thu, 25 Apr 2013 21:08:20 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: crash with rv null in ComputeProductionFlags [9881] 20130425090820P</guid></item></channel></rss>