我最近创建了一个ANTLR3解析器规则ANTLR语法中是否有保留字列表?
options : foo bar;
它没有编译和我花了一些时间来发现options
是一个保留字(AntlrWorks指示的错误,但不是原因)。 ANTLR中是否存在保留字列表,并且在命名规则中是否有最佳做法(这可能有助于避免这种情况)?
我最近创建了一个ANTLR3解析器规则ANTLR语法中是否有保留字列表?
options : foo bar;
它没有编译和我花了一些时间来发现options
是一个保留字(AntlrWorks指示的错误,但不是原因)。 ANTLR中是否存在保留字列表,并且在命名规则中是否有最佳做法(这可能有助于避免这种情况)?
ANTLR V3的保留字是:
Keyword | Description ---------+-------------------------------------------------------- scope | Dynamically-scoped attribute fragment | lexer rule is a helper rule, not real token for parser lexer | grammar type tree | grammar type parser | grammar type grammar | grammar header returns | rule return value(s) throws | rule throws exception(s) catch | catch rule exceptions finally | do this no matter what options | grammar or rule options tokens | can add tokens with this; usually imaginary tokens import | import grammar(s)
不知道 “命名约定” w.r.t.的解析器规则(除了它们应该以小写开头,这当然不是惯例)。
使用您的目标语言的保留字也会导致问题。
我花了一天的时间,试图弄清楚为什么我的语法不起作用,只能意识到它在我的语法中被命名为“enum”的“enum”规则搞乱了。
根据目标语言的不同,这可能是也可能不是问题。我使用的是默认的Java目标,当然也是,所以如果出现这种情况,您应该检查目标语言的保留关键字列表。
您能否扩展解释? – 2009-12-17 04:50:48
谢谢!我想知道是否应该使用伪名称空间名称,例如init_a,init_b,以尽可能避免冲突。 – 2009-11-30 17:02:28
彼得没问题。 – 2009-11-30 21:46:48