我正在尝试为Python中的Antlr语法生成解析树。你知道吗
我的代码:
char_stream = InputStream('a(1)')
lexer = MLexer(char_stream )
stream = CommonTokenStream(lexer)
parser = MParser(stream)
tree = parser.start()
错误:
line 1:0 mismatched input 'a' expecting <INVALID>
当我检查Antlr生成的解析器文件时:
literalNames = [ "<INVALID>", "' '", "'\t'", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"':-'", "','", "'('", "')'", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "<INVALID>", "'.'" ]
symbolicNames = [ "<INVALID>", "<INVALID>", "<INVALID>", "DATALOGPROGRAM",
"SCHEMALIST", "SCHEMA", "CLAUSELIST", "RULELIST",
"FACTLIST", "GOALLIST", "FACT", "E_RULE", "GOAL",
"BODY", "LITERALLIST", "LITERAL", "PREDICATE", "GOALSIGN",
"COMMA", "LEFTBRAK", "RIGHTBRAK", "OPERATOR", "VARIABLELIST",
"VARIABLE", "CONSTANTLIST", "CONSTANT", "Numbers",
"Lrr", "Urr", "PERIOD" ]
在antlr生成的解析器文件中有太多的无效字符。我该怎么解决这个问题?你知道吗
请在Antlr中找到以下语法: 在符号名和文字名中有很多“无效”的成分
grammar N;
start : DATALOGPROGRAM;
LITERAL : LEFTBRAK (VARIABLELIST) RIGHTBRAK;
PREDICATE :Lrr (Lrr|Urr)+;
GOALSIGN : ':-';
COMMA : ',';
LEFTBRAK : '(';
RIGHTBRAK : ')';
OPERATOR : '>' | '<' | '=' | '!=' | '>=' | '<=' ;
VARIABLELIST : VARIABLE | VARIABLE (COMMA VARIABLE)*;
VARIABLE : Urr | Urr (Lrr|Urr)+; /
CONSTANTLIST : CONSTANT | CONSTANT (COMMA CONSTANT)*;
CONSTANT : Lrr | Lrr (Lrr|Urr)+| Numbers ; //Constant must start with Lowercase letter
Numbers : DIGIT;
Lrr : LOWERCASE;
Urr: UPPERCASE;
PERIOD : '.';
fragment LOWERCASE : [a-z] ;
fragment UPPERCASE : [A-Z] ;
fragment DIGIT : [0-9] ;
whitespace : (' ' | '\t') ;
目前没有回答
相关问题 更多 >
编程相关推荐