1
我想解析语句由EOL分隔的语言。我在词法分析器语法(从一个示例中的文档复制)尝试这样做:ANTLR将多个EOL作为一个整体来对待?
EOL : ('\r'? '\n')+ ; // any number of consecutive linefeeds counts as a single EOL
然后在分析器语法中使用这样的:
stmt_sequence : (stmt EOL)* ;
解析器拒绝代码与由一个或分隔的语句更多的空白行。
然而,这是成功的:
EOL : '\r'? '\n' ;
stmt_sequence : (stmt EOL+)* ;
我是一个新手ANTLR。似乎两者都应该工作。是否有关于我不明白的贪婪/非理性词法分析扫描?
我试过3.2和3.4;我在Eclipse中运行ANTLR IDE Indigo on OS X 10.6。
谢谢。