谁能帮我将此 ANTLR 2.0 语法文件转换为 ANTLR 3.0 语法?
题
我已经转换了“简单”零件(fragment,@header和@member declerations等),但是由于我是Antlr的新手,因此我很难转换树语言等。
我用以下 迁移指南.
语法文件可以在这里找到。...
您可以在下面找到一些我遇到问题的示例:
例如,我有以下问题:
n3Directive0!:
d:AT_PREFIX ns:nsprefix u:uriref
{directive(#d, #ns, #u);}
;
或者
propertyList![AST subj]
: NAME_OP! anonnode[subj] propertyList[subj]
| propValue[subj] (SEMI propertyList[subj])?
| // void : allows for [ :a :b ] and empty list "; .".
;
propValue [AST subj]
: v1:verb objectList[subj, #v1]
// Reverse the subject and object
| v2:verbReverse subjectList[subj, #v2]
;
subjectList![AST oldSub, AST prop]
: obj:item { emitQuad(#obj, prop, oldSub) ; }
(COMMA subjectList[oldSub, prop])? ;
objectList! [AST subj, AST prop]
: obj:item { emitQuad(subj,prop,#obj) ; }
(COMMA objectList[subj, prop])?
| // Allows for empty list ", ."
;
解决方案
n3Directive0!:
d=AT_PREFIX ns=nsprefix u=uriref
{directive($d, $ns, $u);}
;
- 您必须使用“=”进行赋值。
- 然后令牌可以用作“$tokenname.getText()”,...
- 然后可以在代码中将规则结果用作“rulename.result”
- 如果您的规则已声明结果名称,则必须使用这些名称 iso。
'结果'。
不隶属于 StackOverflow