<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>The following code generates an error, even though the rule
is not ambiguous. As far as I can tell, this rule shouldn&#8217;t even produce
a warning. If the $ isn&#8217;t enough to make the code clear (visually; it
already is syntactically), we need a keyword to reference the enclosing rule (which
might not be a bad idea anyway). The error is reported in codegen.g, and
removing the if statement that checks for it let my grammar compile/work again :)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 color=slateblue
face=Consolas><span style='font-size:8.0pt;font-family:Consolas;color:slateblue'>assignment_expression<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 color=green
face=Consolas><span style='font-size:8.0pt;font-family:Consolas;color:green'>//
left-factoring the assignment expression and conditional_expression for speed<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font
color=slateblue><span style='color:slateblue'>logical_or_expression<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;
^(<font color=slateblue><span style='color:slateblue'>logical_or_expression</span></font>)<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font
color=slateblue><span style='color:slateblue'>assignment_operator</span></font>
<font color=slateblue><span style='color:slateblue'>assignment_expression<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;
^(<font color=slateblue><span style='color:slateblue'>assignment_operator</span></font>
$<font color=slateblue><span style='color:slateblue'>assignment_expression</span></font>
<font color=slateblue><span style='color:slateblue'>assignment_expression</span></font>)<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font
color=maroon><span style='color:maroon'>'?'</span></font> <font
color=slateblue><span style='color:slateblue'>expression</span></font> <font
color=maroon><span style='color:maroon'>':'</span></font> <font
color=slateblue><span style='color:slateblue'>assignment_expression<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;
^(<font color=navy><span style='color:navy'>AST_CONDITIONAL</span></font> $<font
color=slateblue><span style='color:slateblue'>assignment_expression</span></font>
<font color=slateblue><span style='color:slateblue'>expression</span></font> <font
color=slateblue><span style='color:slateblue'>assignment_expression</span></font>)<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )?<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font
color=slateblue><span style='color:slateblue'>throw_expression<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;
^(<font color=slateblue><span style='color:slateblue'>throw_expression</span></font>)<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>ANTLR Parser Generator&nbsp;
Version 3.1b2 (July 17, 2008)&nbsp; 1989-2008<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>Grammar.g3(6159,29): error 132:
reference $assignment_expression is ambiguous; rule assignment_expression is
enclosing rule and referenced in the production (assuming enclosing rule)<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=1 face=Consolas><span
style='font-size:8.0pt;font-family:Consolas'>Grammar.g3(6161,25): error 132:
reference $assignment_expression is ambiguous; rule assignment_expression is
enclosing rule and referenced in the production (assuming enclosing rule)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>