ANTLR 3.5.2匹配规则,即使输入有额外的令牌
问题描述:
我正在写一个语法来解析sql语句。我有以下规则:ANTLR 3.5.2匹配规则,即使输入有额外的令牌
show_databases :
SHOW DATABASES { System.out.println("Showing databases");
;
当我输入show databases
,我得到的消息。但是,当我的输入是show databases now
时,我会看到消息。我正在构建REPL,并且所有行都以;
结尾。由于语法错误,我想得到一个错误。有任何想法吗?
答
匹配输入的结束还有:
SHOW DATABASES ';'
或
SHOW DATABASES EOF
你有它的方式,解析器不知道不能有“现在”后来作为另一个语句的一部分。事实上,它在成功匹配规则时会停止,并且如果不需要,它甚至不会查看下一个标记。
我刚刚编辑了这个问题,但我一次只读1行,所有行都以';'结尾。 –
然后匹配分号,而不是'EOF'。 –
工作正常!非常感谢你。 –