<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’t even produce
a warning. If the $ isn’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> </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'> : ( <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'> ->
^(<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'> )<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'> ( <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'> ->
^(<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'> | <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'> ->
^(<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'> )?<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'> | <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'> ->
^(<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'> ;<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> </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
Version 3.1b2 (July 17, 2008) 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> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>
</div>
</body>
</html>