-3
我正在使用最新的ANTLR。我收到此错误信息,同时试图调试此语法:Antlr超时等待连接到远程解析器
grammar Grammar;
options { language = Java;
}
@header {
package parser;
import java.util.HashMap;
import viewmodel.*;
import java.util.List;
}
@members {
/** Map variable name to Integer object holding value */
HashMap memory = new HashMap();
}
prog returns [DiagramNode node]
: clas
{$node = $clas.node;}
;
clas returns [DiagramNode node]
:VISIBILITY* CLASSORINTERFACE name=NAME '{' classDef '}' NEWLINE
{$node = $classDef.node;
$node.setName(name.getText());
}
;
classDef returns [DiagramNode node]
:{$node = new DiagramNode(); }
fieldDef ';' NEWLINE?
{$node.getFields().add($fieldDef.field);}
;
fieldDef returns [DiagramField field]
:{$field = new DiagramField();}
type=NAME name=NAME ';' NEWLINE?
{$field.setType(type.getText());
$field.setName(name.getText());
}
;
VISIBILITY
: ('public' | 'private' | 'protected');
CLASSORINTERFACE
: ('class' | 'inerface');
NAME
: ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9') *;
INT : '0'..'9'+ ;
NEWLINE:'\r'? '\n' {skip();};
WS : (' '|'\t')+ {skip();} ;
输入是:
class Abc {
Type1 Name1;
Type2 Name2;
}
我假设它的文法的错误,导致一个又一个被编译和工作的罚款。你能指出我可能的错误吗?
绝对废话!我已经告诉过你这个问题可能出现在你的自定义代码中:你只是不想听(并不是特别感激,并且试图催促我回答你!)。缺少“@lexer :: header”绝对不是问题所在:让读者明白本问答。 –
如何解释这样一个事实,即在不改变我的自定义代码中的任何行的情况下,仅在语法逻辑中更改后才开始工作? – rideronthestorm
我认为你只是因为你是一个恶毒的孩子而做出来的。事实上,你以“我看到这里没有人对ANTLR知道任何事情”开始你的“答案”。“_足够告诉我。寮步再见。 –