Quelqu'un peut-il m'aider à convertir ce fichier de grammaire ANTLR 2.0 en syntaxe ANTLR 3.0?

StackOverflow https://stackoverflow.com/questions/244936

  •  05-07-2019
  •  | 
  •  

Question

J'ai converti les parties "faciles" (fragment, @header et @member déclerations, etc.), mais depuis que je suis nouveau à Antlr, j’ai un très dur temps convertissant les instructions de l'arbre, etc.

J'utilise ce qui suit guide de migration .

Le fichier de grammaire se trouve ici. ...

Vous trouverez ci-dessous quelques exemples de 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 ", ."
    ; 
Était-ce utile?

La solution

n3Directive0!:
                d=AT_PREFIX ns=nsprefix u=uriref
                {directive($d, $ns, $u);}
                ;
  • Vous devez utiliser '=' pour les affectations.
  • Les jetons peuvent ensuite être utilisés comme "$ tokenname.getText ()", ...
  • Les résultats de la règle peuvent ensuite être utilisés dans votre code en tant que 'nomrègle.result'
  • Si vous avez des règles ayant des noms de résultats déclarés, vous devez utiliser ces noms iso.
    'résultat'.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top