ANTLR 3.5.2 匹配规则,即使输入有额外的标记
ANTLR 3.5.2 matches rule even though input has extra tokens
我正在编写语法来解析 sql 语句。我有以下规则:
show_databases :
SHOW DATABASES { System.out.println("Showing databases");
;
当我输入 show databases
时,我收到消息。但是,当我输入 show databases now
时,我确实看到了消息。我正在构建一个 REPL,所有行都以 ;
结尾。我想得到一个错误,因为语法错误。有什么想法吗?
也匹配输入的结尾:
SHOW DATABASES ';'
或
SHOW DATABASES EOF
按照你的方式,解析器不知道后面不能有 "now" 作为另一条语句的一部分。事实上,它会在成功匹配规则时停止,如果不需要,甚至不会查看下一个标记。
我正在编写语法来解析 sql 语句。我有以下规则:
show_databases :
SHOW DATABASES { System.out.println("Showing databases");
;
当我输入 show databases
时,我收到消息。但是,当我输入 show databases now
时,我确实看到了消息。我正在构建一个 REPL,所有行都以 ;
结尾。我想得到一个错误,因为语法错误。有什么想法吗?
也匹配输入的结尾:
SHOW DATABASES ';'
或
SHOW DATABASES EOF
按照你的方式,解析器不知道后面不能有 "now" 作为另一条语句的一部分。事实上,它会在成功匹配规则时停止,如果不需要,甚至不会查看下一个标记。