[antlr-interest] Problem removing warning
    Gerald Rosenberg 
    gerald at certiv.net
       
    Fri Mar 19 10:01:08 PDT 2010
    
    
  
Having a bit of difficulty in figuring out how to unambiguously parse 
this into an AST.
Order of the elements is significant, the parens are significant, and 
the leading dot is significant.
   (.buf_unittest.complex_opt1).foo;
   .buf_unittest.complex_opt1.fum;
   (buf_unittest.complex_opt1).(.buf_unittest.quux);
   (.buf_unittest.complex_opt1).(buf_unittest.corge).qux;
   (complex_opt2).baz;
   (complex_opt2).(grault);
   (complex_opt2).bar.foo;
   (complex_opt2).bar.(quux);
   (complex_opt2).bar.(buf_unittest.corge).qux;
   (complex_opt2).(garply).foo;
   (complex_opt2).(garply).(.buf_unittest.quux);
   (complex_opt2).(buf_unittest.garply).(corge).qux;
   (ComplexOptionType2.ComplexOptionType4.complex_opt4).waldo;
   (complex_opt2).fred.waldo;
   (buf_unittest.complex_opt3).qux;
   (complex_opt3).complexoptiontype5.plugh;
   (complexopt6).xyzzy;
The rule ident_parens following appears to work, but Antlr is 
complaining "Decision can match input such as "'.' ID" using multiple 
alternatives: 1, 2" on both identN and identO.  I can see the 
theoretical overlap, but cannot tell if the warning is actually 
significant or how to fix the rules to avoid the warning.
ident_parens
     : (identM | identN | identO ) ('.' ( identM | identO ) )*
     ;
identM
     :  '(' '.' ipd+=ID ( '.' ipd+=ID )* ')'   -> ^( IDENT_PARENSDOT $ipd+ )
     |  '(' ip+=ID ( '.' ip+=ID )* ')'         -> ^( IDENT_PARENS $ip+ )
     ;
identN
     : '.' id+=ID ( '.' id+=ID )*              -> ^( IDENT_DOT $id+ )
     ;
identO
     : i+=ID ( '.' i+=ID )*                    -> ^( IDENT $i+ )
     ;
Thanks...
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: PBTest.g
Url: http://www.antlr.org/pipermail/antlr-interest/attachments/20100319/5e7fa597/attachment.pl 
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pbtest.txt
Url: http://www.antlr.org/pipermail/antlr-interest/attachments/20100319/5e7fa597/attachment.txt 
    
    
More information about the antlr-interest
mailing list