2008-10-28 7 views
1

J'ai converti les parties « faciles » (fragment, @header et @member declerations etc.), mais depuis que je suis nouveau, je Antlr un temps vraiment difficile de convertir les déclarations d'arbres, etc.Quelqu'un peut-il m'aider à convertir ce fichier de grammaire ANTLR 2.0 en syntaxe ANTLR 3.0?

J'utilise le suivant migration guide.

The grammar file can be found here. ...

Ci-dessous vous trouverez quelques exemples où je rencontre des problèmes:

Par exemple, j'ai des problèmes avec:

n3Directive0!: 
       d:AT_PREFIX ns:nsprefix u:uriref 
       {directive(#d, #ns, #u);} 
       ; 

ou

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

Répondre

1
n3Directive0!: 
       d=AT_PREFIX ns=nsprefix u=uriref 
       {directive($d, $ns, $u);} 
       ; 
  • Vous devez utiliser '=' pour les affectations.
  • Tokens peuvent alors être utilisés comme « tokenname.getText $() », ...
  • résultats de règles peuvent alors être utilisés dans votre code comme « rulename.result »
  • Si vous avez des règles ayant déclaré des noms de résultat , vous devez utiliser ces noms iso.
    'résultat'.
Questions connexes