2008-10-28 3 views
1

Я преобразовал «легкие» части (фрагмент, @header и @member declerations и т.д.), но так как я новичок в Antlr у меня действительно трудно время преобразования утверждений дерева и т.д.Может ли кто-нибудь помочь мне преобразовать этот файл грамматики ANTLR 2.0 в синтаксис ANTLR 3.0?

Я использую следующие migration guide.

The grammar file can be found here. ...

Ниже вы можете найти некоторые примеры, когда я бегу в проблемы:

К примеру, у меня есть проблемы с:

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

ответ

1
n3Directive0!: 
       d=AT_PREFIX ns=nsprefix u=uriref 
       {directive($d, $ns, $u);} 
       ; 
  • Вы должны использовать '=' для присвоений.
  • токены могут быть использованы в качестве «$ tokenname.getText()», ...
  • результаты Rule могут быть использованы в вашем коде как «rulename.result»
  • Если у вас есть правила Объявив имена результата , вы должны использовать эти имена iso.
    'результат'.
Смежные вопросы