Antlr 这语法怎么了
我试图写一个语法来解析输入的格式Antlr 这语法怎么了,antlr,Antlr,我试图写一个语法来解析输入的格式 -- sfasfa af adfa sfsdfsadfa -- 这就是我想到的,但上面说的是不匹配的TokenException grammar abc; key : MARK password MARK; password: char+ ; char: CHAR; WS: (' '|'\r'|'\t'|'\u000C'|'\n') {channel=99;}; CHAR: ('a'..'z'|'A'..'Z'|'0'..'9'|'/
--
sfasfa af adfa
sfsdfsadfa
--
这就是我想到的,但上面说的是不匹配的TokenException
grammar abc;
key : MARK password MARK;
password: char+ ;
char: CHAR;
WS: (' '|'\r'|'\t'|'\u000C'|'\n') {channel=99;};
CHAR: ('a'..'z'|'A'..'Z'|'0'..'9'|'/'|'+'|'='|'_'|'-'|':')*;
MARK : '--';
我想获取密码。有两件事出错:
- lexer规则应始终至少匹配1个字符(您的
规则可以匹配空字符串)李>char
- 单词
前面应加频道
李>$
- 最好不要使用幻数(不是
,而是99
)HIDDEN
谢谢,这解决了所有的问题。你能告诉我lexer和parser规则有什么区别吗?@Buxme,看看前面的问答:
grammar abc;
key : HEADER password END;
password : char+ ;
char : CHAR;
WS : (' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;};
CHAR : ('a'..'z'|'A'..'Z'|'0'..'9'|'/'|'+'|'='|'_'|'-'|':');
HEADER : '--BEGIN--';
END : '--END--';