1

使用最新的 ANTLR Works 1.5 和以下语法:

语法测试方法;

ID : ('a'..'z'|'A'..'Z'|' ') ('a'..'z'|'A'..'Z'|'0'..'9 '|' ')* ;

WS : ( ' ' | '\t' | '\r' | '\n' ) ;

ws : (WS)* ;

身份证:身份证;

表达式:id | 方法 ;

方法
:标识符 ws '(' ws ')' ;

标识符:(id(选择器)*'.')?ID ;

选择器:'。' 编号 | '[' ws 表达式 ws ']' ;

提交以表达式开头的 abcd 时出现 NoViableAltException。从 id 开始时我没有收到此错误,所以既然表达式有 id 作为替代,为什么它不起作用?

4

1 回答 1

1

很多时候,无论你从什么开始,都没有 EOF(文件结尾)会导致问题。试着放

表达式:(id |方法)EOF;

另外,作为旁注,使用 [a-zA-Z0-9] 而不是 ('a'..'z'|'A'..'Z'|'0'..'9 '|'') 和 [ \r\t\n] 而不是 ( ' ' | '\t' | '\r' | '\n' ),但您的版本也应该可以工作。

于 2013-11-20T00:37:33.380 回答