如何在此ANTLR语法中删除“不支持的选项”“贪婪”警告?
问题描述:
将ANTLR 3转换为ANTLR 4.我有这样的gabillion警告。我发现其他关于贪婪的SO问题,但不是这个问题。如何在此ANTLR语法中删除“不支持的选项”“贪婪”警告?
table_reference: // table_ref in sql_yacc.yy, we use table_ref here for a different rule.
table_factor (options { greedy = true; }: join)*
;
答
我有一个C#的答案,
https://blog.lextudio.com/how-to-use-antlr-4-on-net-4361915b670f
你可以申请其他语言一样尖,
使用*?而不是*作为选项{greedy = false}消失了。
更新:ANTLR 4的官方文档是here。
此修补程序不是目标语言相关的,而是ANTLR语法语法的纯粹更改。 –
是\ *?和?\ *相等? – nicomp
'?*'?你想用这个来达到什么目的? '*?'是非贪婪匹配的新语法。 –