ANTLR在令牌和#x27;B';和十六进制数';B';无前缀
我很难找到以下结构语言的正确语法:ANTLR在令牌和#x27;B';和十六进制数';B';无前缀,antlr,antlr4,Antlr,Antlr4,我很难找到以下结构语言的正确语法: W1234 B1234[16] B6789 W6789,B 其中1234和6789是任意十进制数。B是没有任何前缀的任何十六进制数 语法: grammar Tsx7; program returns [string code] : ident EOF ; ident returns [string code] : 'W' NUMBER ( ',' ( DEC_DIGITS | HEX_DIGIT )+ )? | 'B' NUMBE
W1234
B1234[16]
B6789
W6789,B
其中1234和6789是任意十进制数。B是没有任何前缀的任何十六进制数
语法:
grammar Tsx7;
program returns [string code]
: ident EOF
;
ident returns [string code]
: 'W' NUMBER ( ',' ( DEC_DIGITS | HEX_DIGIT )+ )?
| 'B' NUMBER ( '[' NUMBER ']' )?
;
NUMBER: DEC_DIGITS+;
fragment DEC_DIGITS: '0'..'9';
fragment HEX_DIGITS: 'A'..'F';
有了这些(法律)投入
我得到输入不匹配或NoViableAlt异常
如果这些输入工作正常:
W1
B2[8]
B3123
我试了好几种语法,但都找不到正确的
谢谢你的帮助,
Martin不要在解析器规则中使用lexer片段。它们永远不会出现在解析器中。使这些规则成为普通的lexer规则或定义一个调用片段规则的规则
W1
B2[8]
B3123