Java 即使输入有额外的标记,ANTLR 3.5.2也会匹配规则

Java 即使输入有额外的标记,ANTLR 3.5.2也会匹配规则,java,parsing,syntax,antlr3,Java,Parsing,Syntax,Antlr3,我正在编写语法来解析sql语句。我有以下规则: show_databases : SHOW DATABASES { System.out.println("Showing databases"); ; 当我的输入为“显示数据库”时,我会收到消息。但是,当我的输入为“立即显示数据库”时,我确实看到了消息。我正在构建一个REPL,所有的行都以结尾。我想得到一个错误,因为语法是错误的。有什么想法吗?也要匹配输入的结尾: SHOW DATABASES ';' 或 按照您的方式,解析器

我正在编写语法来解析sql语句。我有以下规则:

show_databases :
    SHOW DATABASES { System.out.println("Showing databases");    
;

当我的输入为“显示数据库”时,我会收到消息。但是,当我的输入为“立即显示数据库”时,我确实看到了消息。我正在构建一个REPL,所有的行都以
结尾。我想得到一个错误,因为语法是错误的。有什么想法吗?

也要匹配输入的结尾:

SHOW DATABASES ';'


按照您的方式,解析器不知道后面不能有“now”作为另一条语句的一部分。事实上,它在成功匹配规则时停止,如果不需要,甚至不看下一个标记。

也匹配输入结束:

SHOW DATABASES ';'


按照您的方式,解析器不知道后面不能有“now”作为另一条语句的一部分。事实上,当它成功地匹配规则时,它会停止,如果不需要,它甚至不看下一个标记。

我刚刚编辑了这个问题,但我一次只看一行,我所有的行都以“;”结尾。然后再匹配分号,而不是
EOF
。我刚刚编辑了这个问题,但我一次读一行,所有的行都以“;”结尾。然后再匹配分号,而不是
EOF