我的语法不会接受像“x = 4,xy = 1”
这样的输入grammar Ex5;
prog : stat+;
stat : ID '=' NUMBER;
LETTER : ('a'..'z'|'A'..'Z');
DIGIT : ('0'..'9');
ID : LETTER+;
NUMBER : DIGIT+;
WS : (' '|'\t'| '\r'? '\n' )+ {skip();};
我需要做些什么来让它接受大量的输入,比如ID = NUMBER? 提前谢谢。
答案 0 :(得分:1)
您必须在语法中考虑逗号','
。此外,由于您(很可能)不希望创建LETTER
和DIGIT
令牌,因为它们仅用于其他词法规则,您应该制作这些fragments
:
grammar Ex5;
prog : stat (',' stat)*;
stat : ID '=' NUMBER;
ID : LETTER+;
NUMBER : DIGIT+;
fragment LETTER : 'a'..'z' | 'A'..'Z';
fragment DIGIT : '0'..'9';
WS : (' '|'\t'| '\r'? '\n')+ {skip();};