【发布时间】:2012-02-08 23:17:41
【问题描述】:
我想解析一种语言,其中语句由 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 上都试过了;我在 OS X 10.6 上运行 ANTLR IDE in Eclipse Indigo。
谢谢。
【问题讨论】: