1

我已经转换了“简单”部分(片段、@header 和@member 声明等),但是由于我是 Antlr 的新手,所以我很难转换 Tree 语句等。

我使用以下迁移指南

语法文件可以在这里找到。...

您可以在下面找到一些我遇到问题的示例:

例如,我有以下问题:

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 ", ."
    ; 
4

1 回答 1

1
n3Directive0!:
                d=AT_PREFIX ns=nsprefix u=uriref
                {directive($d, $ns, $u);}
                ;
  • 您必须使用“=”进行分配。
  • 然后可以将令牌用作 '$tokenname.getText()', ...
  • 然后可以在您的代码中将规则结果用作“rulename.result”
  • 如果您有声明结果名称的规则,则必须使用这些名称 iso。
    '结果'。
于 2009-02-16T11:23:06.547 回答