我目前正在遵循Frederico Tomasetti Antlr教程,但是在尝试生成我的antlr语法定义时遇到以下错误。
Chat.g4:52:26: syntax error: ']' came as a complete surprise to me
Chat.g4:52:25 syntax error: mismatched input ')' expecting SEMI while matching a lexer rule
有人可以看到我哪里出问题了吗?
我的g4文件:
1 grammar Chat;
2
3 /*
4 * Parser Rules
5 */
6
7 chat : line+ EOF ;
8
9 line : name command message NEWLINE;
10
11 message : (emoticon | link | color | mention | WORD | WHITESPACE)+ ;
12
13 name : WORD WHITESPACE;
14
15 command : (SAYS | SHOUTS) ':' WHITESPACE ;
16
17 emoticon : ':' '-'? ')'
18 | ':' '-'? '('
19 ;
20
21 link : '[' TEXT ']' '(' TEXT ')' ;
22
23 color : '/' WORD '/' message '/';
24
25 mention : '@' WORD ;
26
27 /*
28 * Lexer Rules
29 */
30
31 fragment A : ('A'|'a') ;
32 fragment S : ('S'|'s') ;
33 fragment Y : ('Y'|'y') ;
34 fragment H : ('H'|'h') ;
35 fragment O : ('O'|'o') ;
36 fragment U : ('U'|'u') ;
37 fragment T : ('T'|'t') ;
38
39 fragment LOWERCASE : [a-z] ;
40 fragment UPPERCASE : [A-Z] ;
41
42 SAYS : S A Y S ;
43
44 SHOUTS : S H O U T S;
45
46 WORD : (LOWERCASE | UPPERCASE | '_')+ ;
47
48 WHITESPACE : (' ' | '\t') ;
49
50 NEWLINE : ('\r'? '\n' | '\r')+ ;
51
52 TEXT : ~[])]+ ;
任何帮助将不胜感激。
答案 0 :(得分:1)
TEXT : ~[])]+ ;
您不能使用字符类中未转义的]
-甚至在一开始也不能使用。您需要在其前面加上反斜杠:~[\])]+
。