如何在此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)* 
; 

enter image description here

我有一个C#的答案,

https://blog.lextudio.com/how-to-use-antlr-4-on-net-4361915b670f

你可以申请其他语言一样尖,

使用*?而不是*作为选项{greedy = false}消失了。

更新:ANTLR 4的官方文档是here

+0

此修补程序不是目标语言相关的,而是ANTLR语法语法的纯粹更改。 –

+0

是\ *?和?\ *相等? – nicomp

+0

'?*'?你想用这个来达到什么目的? '*?'是非贪婪匹配的新语法。 –