Может ли кто-нибудь помочь мне преобразовать этот файл грамматики ANTLR 2.0 в синтаксис ANTLR 3.0?

Я преобразовал «легкие» части (фрагменты, объявления @header и @member и т. Д.), Но, поскольку я новичок в Antlr, мне очень трудно конвертировать операторы Tree и т. Д.

Я использую следующие руководство по миграции.

Здесь можно найти файл грамматики. ...

Ниже вы можете найти несколько примеров, в которых я сталкиваюсь с проблемами:

Например, у меня проблемы с:

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

or

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

person kitsune    schedule 28.10.2008    source источник


Ответы (1)


n3Directive0!:
                d=AT_PREFIX ns=nsprefix u=uriref
                {directive($d, $ns, $u);}
                ;
  • Вы должны использовать '=' для назначений.
  • Затем токены можно использовать как '$ tokenname.getText ()', ...
  • Затем результаты правила можно использовать в вашем коде как "rulename.result".
  • Если у вас есть правила, в которых объявлены имена результатов, вы должны использовать эти имена iso.
    'result'.
person Bruno Ranschaert    schedule 16.02.2009