Class JJFileAnnotator

  • All Implemented Interfaces:
    IVoidVisitor

    public class JJFileAnnotator
    extends DepthFirstVoidVisitor
    The JJFileAnnotator visitor generates the (jtb) annotated .jj file containing the tree-building code.

    Code is printed in a buffer and saveToFile(java.lang.String) is called to save it in the output file.

    JJFileAnnotator works as follows:

    • it gets and memorizes the result type of a JavaCodeProduction or a BNFProduction,
    • in generateJcRHS(JavaCodeProduction) and generateBnfRHS(BNFProduction), it redirects output to a temporary buffer,
    • it walks down the tree, prints the RHS into the temporary buffer, and builds the varList,
    • it traverses varList, prints the variable declarations to the main buffer
    • it prints the Block (for a BNFProduction to the main buffer, then the temporary buffer into the main buffer.
    When it wants to print a node and its subtree without annotating it, it uses an instance of the JavaCCPrinter to visit the node.

    This visitor maintains state (for a grammar), is supposed to be run once and not supposed to be run in parallel threads (on the same grammar).

    • Method Detail

      • visit

        public void visit​(JavaCCInput n)
        Visits a JavaCCInput node, whose children are the following :

        f0 -> JavaCCOptions()
        f1 -> "PARSER_BEGIN"
        f2 -> "("
        f3 -> IdentifierAsString()
        f4 -> ")"
        f5 -> CompilationUnit()
        f6 -> "PARSER_END"
        f7 -> "("
        f8 -> IdentifierAsString()
        f9 -> ")"
        f10 -> ( Production() )+
        f11 -> < EOF >
        s: 1465207473

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(JavaCodeProduction n)
        Visits a JavaCodeProduction node, whose children are the following :

        f0 -> "JAVACODE"
        f1 -> AccessModifier()
        f2 -> ResultType()
        f3 -> IdentifierAsString()
        f4 -> FormalParameters()
        f5 -> [ #0 "throws" #1 Name()
        .. .. . #2 ( $0 "," $1 Name() )* ]
        f6 -> [ "%" ]
        f7 -> Block()
        s: -763138104

        Specified by:
        visit in interface IVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(BNFProduction n)
        Visits a BNFProduction node, whose children are the following :

        f0 -> AccessModifier()
        f1 -> ResultType()
        f2 -> IdentifierAsString()
        f3 -> FormalParameters()
        f4 -> [ #0 "throws" #1 Name()
        .. .. . #2 ( $0 "," $1 Name() )* ]
        f5 -> [ "!" ]
        f6 -> ":"
        f7 -> Block()
        f8 -> "{"
        f9 -> ExpansionChoices()
        f10 -> "}"
        s: 1323482450

        Specified by:
        visit in interface IVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(RegularExprProduction n)
        Visits a RegularExprProduction node, whose children are the following :

        f0 -> [ %0 #0 "<" #1 "*" #2 ">"
        .. .. | %1 #0 "<" #1 < IDENTIFIER >
        .. .. . .. #2 ( $0 "," $1 < IDENTIFIER > )*
        .. .. . .. #3 ">" ]
        f1 -> RegExprKind()
        f2 -> [ #0 "[" #1 "IGNORE_CASE" #2 "]" ]
        f3 -> ":"
        f4 -> "{"
        f5 -> RegExprSpec()
        f6 -> ( #0 "|" #1 RegExprSpec() )*
        f7 -> "}"
        s: 484788342

        Specified by:
        visit in interface IVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(ExpansionChoices n)
        Visits a ExpansionChoices node, whose children are the following :

        f0 -> Expansion()
        f1 -> ( #0 "|" #1 Expansion() )*
        s: -1726831935

        Specified by:
        visit in interface IVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(Expansion n)
        Visits a Expansion node, whose children are the following :

        f0 -> ( #0 "LOOKAHEAD" #1 "(" #2 LocalLookahead() #3 ")" )?
        f1 -> ( ExpansionUnit() )+
        s: -2134365682

        Specified by:
        visit in interface IVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(LocalLookahead n)
        Visits a LocalLookahead node, whose children are the following :

        f0 -> [ IntegerLiteral() ]
        f1 -> [ "," ]
        f2 -> [ ExpansionChoices() ]
        f3 -> [ "," ]
        f4 -> [ #0 "{"
        .. .. . #1 [ Expression() ]
        .. .. . #2 "}" ]
        s: -1879920786

        Specified by:
        visit in interface IVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(ExpansionUnit n)
        Visits a ExpansionUnit node, whose child is the following :

        f0 -> . %0 #0 "LOOKAHEAD" #1 "(" #2 LocalLookahead() #3 ")"
        .. .. | %1 Block()
        .. .. | %2 #0 "[" #1 ExpansionChoices() #2 "]"
        .. .. | %3 ExpansionUnitTCF()
        .. .. | %4 #0 [ $0 PrimaryExpression() $1 "=" ]
        .. .. . .. #1 ( &0 $0 IdentifierAsString() $1 Arguments()
        .. .. . .. .. . .. $2 [ "!" ]
        .. .. . .. .. | &1 $0 RegularExpression()
        .. .. . .. .. . .. $1 [ ?0 "." ?1 < IDENTIFIER > ]
        .. .. . .. .. . .. $2 [ "!" ] )
        .. .. | %5 #0 "(" #1 ExpansionChoices() #2 ")"
        .. .. . .. #3 ( &0 "+"
        .. .. . .. .. | &1 "*"
        .. .. . .. .. | &2 "?" )?
        s: 1116287061

        Specified by:
        visit in interface IVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(ExpansionUnitTCF n)
        Visits a ExpansionUnitTCF node, whose children are the following :

        f0 -> "try"
        f1 -> "{"
        f2 -> ExpansionChoices()
        f3 -> "}"
        f4 -> ( #0 "catch" #1 "("
        .. .. . #2 ( Annotation() )*
        .. .. . #3 [ "final" ]
        .. .. . #4 Name() #5 < IDENTIFIER > #6 ")" #7 Block() )*
        f5 -> [ #0 "finally" #1 Block() ]
        s: 1601707097

        Specified by:
        visit in interface IVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(RegularExpression n)
        Visits a RegularExpression node, whose child is the following :

        f0 -> . %0 StringLiteral()
        .. .. | %1 #0 "<"
        .. .. . .. #1 [ $0 [ "#" ]
        .. .. . .. .. . $1 IdentifierAsString() $2 ":" ]
        .. .. . .. #2 ComplexRegularExpressionChoices() #3 ">"
        .. .. | %2 #0 "<" #1 IdentifierAsString() #2 ">"
        .. .. | %3 #0 "<" #1 "EOF" #2 ">"
        s: 1719627151

        Specified by:
        visit in interface IVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(Statement n)
        Visits a Statement node, whose child is the following :

        f0 -> . %00 LabeledStatement()
        .. .. | %01 AssertStatement()
        .. .. | %02 Block()
        .. .. | %03 EmptyStatement()
        .. .. | %04 #0 StatementExpression() #1 ";"
        .. .. | %05 SwitchStatement()
        .. .. | %06 IfStatement()
        .. .. | %07 WhileStatement()
        .. .. | %08 DoStatement()
        .. .. | %09 ForStatement()
        .. .. | %10 BreakStatement()
        .. .. | %11 ContinueStatement()
        .. .. | %12 ReturnStatement()
        .. .. | %13 ThrowStatement()
        .. .. | %14 SynchronizedStatement()
        .. .. | %15 TryStatement()
        s: 1394695492

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(Block n)
        Visits a Block node, whose children are the following :

        f0 -> "{"
        f1 -> ( BlockStatement() )*
        f2 -> "}"
        s: -47169424

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(BlockStatement n)
        Visits a BlockStatement node, whose child is the following :

        f0 -> . %0 #0 LocalVariableDeclaration() #1 ";"
        .. .. | %1 Statement()
        .. .. | %2 ClassOrInterfaceDeclaration()
        s: -1009630136

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(TryStatement n)
        Visits a TryStatement node, whose children are the following :

        f0 -> "try"
        f1 -> Block()
        f2 -> ( #0 "catch" #1 "(" #2 FormalParameter() #3 ")" #4 Block() )*
        f3 -> [ #0 "finally" #1 Block() ]
        s: 1108527850

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(SwitchStatement n)
        Visits a SwitchStatement node, whose children are the following :

        f0 -> "switch"
        f1 -> "("
        f2 -> Expression()
        f3 -> ")"
        f4 -> "{"
        f5 -> ( #0 SwitchLabel()
        .. .. . #1 ( BlockStatement() )* )*
        f6 -> "}"
        s: 645895087

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(IfStatement n)
        Visits a IfStatement node, whose children are the following :

        f0 -> "if"
        f1 -> "("
        f2 -> Expression()
        f3 -> ")"
        f4 -> Statement()
        f5 -> [ #0 "else" #1 Statement() ]
        s: -1906079982

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(DoStatement n)
        Visits a DoStatement node, whose children are the following :

        f0 -> "do"
        f1 -> Statement()
        f2 -> "while"
        f3 -> "("
        f4 -> Expression()
        f5 -> ")"
        f6 -> ";"
        s: 1162769715

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(ForStatement n)
        Visits a ForStatement node, whose children are the following :

        f0 -> "for"
        f1 -> "("
        f2 -> ( %0 #0 VariableModifiers() #1 Type() #2 < IDENTIFIER > #3 ":" #4 Expression()
        .. .. | %1 #0 [ ForInit() ]
        .. .. . .. #1 ";"
        .. .. . .. #2 [ Expression() ]
        .. .. . .. #3 ";"
        .. .. . .. #4 [ ForUpdate() ] )
        f3 -> ")"
        f4 -> Statement()
        s: 755358653

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • nodeClassComment

        protected java.lang.String nodeClassComment​(INode n,
                                                    java.lang.String str)
        Returns a node class comment with an extra comment (a //jcp followed by the node class short name plus the extra comment if global flag set, nothing otherwise).
        Parameters:
        n - - the node for the node class comment
        str - - the extra comment
        Returns:
        the node class comment
      • nodeClassComment

        protected java.lang.String nodeClassComment​(INode n)
        Returns a node class comment (a //jcp followed by the node class short name if global flag set, nothing otherwise).
        Parameters:
        n - - the node for the node class comment
        Returns:
        the node class comment
      • saveToFile

        public final int saveToFile​(java.lang.String outFile)
                             throws java.io.IOException
        Saves the current buffer to an output file.
        Parameters:
        outFile - - the output file
        Returns:
        OK_RC or FILE_EXISTS_RC
        Throws:
        java.io.IOException - if IO problem
      • genJavaBranch

        protected final java.lang.StringBuilder genJavaBranch​(INode n)
        Generates a java node and its subtree with a JavaPrinter.
        Parameters:
        n - - the node to process
        Returns:
        a buffer with the generated source
      • visit

        public void visit​(Token n)
        Prints into the current buffer a Token image and its specials before if global flag set.
        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(OptionBinding n)
        Visits a OptionBinding node, whose children are the following :

        f0 -> ( %0 < IDENTIFIER >
        .. .. | %1 "LOOKAHEAD"
        .. .. | %2 "IGNORE_CASE"
        .. .. | %3 "static" )
        f1 -> "="
        f2 -> ( %0 IntegerLiteral()
        .. .. | %1 BooleanLiteral()
        .. .. | %2 StringLiteral() )
        f3 -> ";"
        s: -1998174573

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(Production n)
        Visits a Production node, whose child is the following :

        f0 -> . %0 JavaCodeProduction()
        .. .. | %1 RegularExprProduction()
        .. .. | %2 TokenManagerDecls()
        .. .. | %3 BNFProduction()
        s: -120615333

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(RegExprKind n)
        Visits a RegExprKind node, whose child is the following :

        f0 -> . %0 "TOKEN"
        .. .. | %1 "SPECIAL_TOKEN"
        .. .. | %2 "SKIP"
        .. .. | %3 "MORE"
        s: -1874441621

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(RegExprSpec n)
        Visits a RegExprSpec node, whose children are the following :

        f0 -> RegularExpression()
        f1 -> [ "!" ]
        f2 -> [ Block() ]
        f3 -> [ #0 ":" #1 < IDENTIFIER > ]
        s: -1949948808

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(ComplexRegularExpressionUnit n)
        Visits a ComplexRegularExpressionUnit node, whose child is the following :

        f0 -> . %0 StringLiteral()
        .. .. | %1 #0 "<" #1 IdentifierAsString() #2 ">"
        .. .. | %2 CharacterList()
        .. .. | %3 #0 "(" #1 ComplexRegularExpressionChoices() #2 ")"
        .. .. . .. #3 ( &0 "+"
        .. .. . .. .. | &1 "*"
        .. .. . .. .. | &2 "?"
        .. .. . .. .. | &3 $0 "{" $1 IntegerLiteral()
        .. .. . .. .. . .. $2 [ ?0 ","
        .. .. . .. .. . .. .. . ?1 [ IntegerLiteral() ] ]
        .. .. . .. .. . .. $3 "}" )?
        s: -1507427530

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit
      • visit

        public void visit​(CharacterList n)
        Visits a CharacterList node, whose children are the following :

        f0 -> [ "~" ]
        f1 -> "["
        f2 -> [ #0 CharacterDescriptor()
        .. .. . #1 ( $0 "," $1 CharacterDescriptor() )* ]
        f3 -> "]"
        s: -966448889

        Specified by:
        visit in interface IVoidVisitor
        Overrides:
        visit in class DepthFirstVoidVisitor
        Parameters:
        n - - the node to visit