Sunday, February 13, 2011

Can anyone help me convert this ANTLR 2.0 grammar file to ANTLR 3.0 syntax?

I've converted the 'easy' parts (fragment, @header and @member declerations etc.), but since I'm new to Antlr I have a really hard time converting the Tree statements etc.

I use the following migration guide.

The grammar file can be found here....

Below you can find some examples where I run into problems:

For instance, I have problems with:

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 ", ."
    ;
  • n3Directive0!:
                    d=AT_PREFIX ns=nsprefix u=uriref
                    {directive($d, $ns, $u);}
                    ;
    
    • You have to use '=' for assignments.
    • Tokens can then be used as '$tokenname.getText()', ...
    • Rule results can then be used in your code as 'rulename.result'
    • If you have rules having declared result names, you have to use these names iso.
      'result'.

0 comments:

Post a Comment