令牌流可以在运行时更改吗?
Can token stream be changed at runtime?
我需要在 ANTLR 3 中解析 SQL 服务器 if 语句。 SQL 服务器 if 语句如下:
IF expression BEGIN? statements END?
因为 BEGIN 和 END 是可选的。如果未指定,我只需要在运行时在 ANTLR 令牌流中添加 BEGIN 和 END 令牌在令牌流中。
通过添加谓词解决了问题:
IF expression {input.LA(1) == BEGIN}? => BEGIN statements_list END
| statements_list
我需要在 ANTLR 3 中解析 SQL 服务器 if 语句。 SQL 服务器 if 语句如下:
IF expression BEGIN? statements END?
因为 BEGIN 和 END 是可选的。如果未指定,我只需要在运行时在 ANTLR 令牌流中添加 BEGIN 和 END 令牌在令牌流中。
通过添加谓词解决了问题:
IF expression {input.LA(1) == BEGIN}? => BEGIN statements_list END | statements_list