qualquer ajuda pode me converter este arquivo de gramática ANTLR 2.0 para ANTLR 3.0 sintaxe?

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Eu converti a partes 'fácil' (fragmento, @header e @member declerations etc.), mas desde que eu sou novo para Antlr Eu tenho um realmente difícil tempo de conversão das demonstrações Árvore etc.

Eu uso o seguinte guia de migração .

O arquivo de gramática pode ser encontrada aqui. ...

Abaixo, você pode encontrar alguns exemplos em que eu me deparo com problemas:

Por exemplo, eu tenho problemas com:

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 ", ."
    ; 
Foi útil?

Solução

n3Directive0!:
                d=AT_PREFIX ns=nsprefix u=uriref
                {directive($d, $ns, $u);}
                ;
  • Você tem que usar '=' para atribuições.
  • Os tokens podem, então, ser usado como '$ tokenname.getText ()', ...
  • Resultados de regras podem, então, ser usado em seu código como 'rulename.result'
  • Se você tem regras que têm nomes de resultados declarados, você tem que usar estes nomes iso.
    'Resultado'.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top