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).

  • Field Details

  • Constructor Details

  • Method Details

    • 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 -> invalid input: '<' 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 "invalid input: '<'" #1 "*" #2 ">"
      .. .. | %1 #0 "invalid input: '<'" #1 invalid input: '<' IDENTIFIER >
      .. .. . .. #2 ( $0 "," $1 invalid input: '<' 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 ( invalid input: '&'0 $0 IdentifierAsString() $1 Arguments()
      .. .. . .. .. . .. $2 [ "!" ]
      .. .. . .. .. | invalid input: '&'1 $0 RegularExpression()
      .. .. . .. .. . .. $1 [ ?0 "." ?1 invalid input: '<' IDENTIFIER > ]
      .. .. . .. .. . .. $2 [ "!" ] )
      .. .. | %5 #0 "(" #1 ExpansionChoices() #2 ")"
      .. .. . .. #3 ( invalid input: '&'0 "+"
      .. .. . .. .. | invalid input: '&'1 "*"
      .. .. . .. .. | invalid input: '&'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 invalid input: '<' 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 "invalid input: '<'"
      .. .. . .. #1 [ $0 [ "#" ]
      .. .. . .. .. . $1 IdentifierAsString() $2 ":" ]
      .. .. . .. #2 ComplexRegularExpressionChoices() #3 ">"
      .. .. | %2 #0 "invalid input: '<'" #1 IdentifierAsString() #2 ">"
      .. .. | %3 #0 "invalid input: '<'" #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(LabeledStatement n)
      Visits a LabeledStatement node, whose children are the following :

      f0 -> invalid input: '<' IDENTIFIER >
      f1 -> ":"
      f2 -> Statement()
      s: -1956923191

      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(LocalVariableDeclaration n)
      Visits a LocalVariableDeclaration node, whose children are the following :

      f0 -> VariableModifiers()
      f1 -> Type()
      f2 -> VariableDeclarator()
      f3 -> ( #0 "," #1 VariableDeclarator() )*
      s: 225808290

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

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

      f0 -> ( ( %0 "final"
      .. .. . | %1 Annotation() ) )*
      s: 2076055340

      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(WhileStatement n)
      Visits a WhileStatement node, whose children are the following :

      f0 -> "while"
      f1 -> "("
      f2 -> Expression()
      f3 -> ")"
      f4 -> Statement()
      s: 503551312

      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 invalid input: '<' 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
    • visit

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

      f0 -> "return"
      f1 -> [ Expression() ]
      f2 -> ";"
      s: -1971167888

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

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

      f0 -> "synchronized"
      f1 -> "("
      f2 -> Expression()
      f3 -> ")"
      f4 -> Block()
      s: 2040551171

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

      protected String nodeClassComment(INode n, 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 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(String outFile) throws IOException
      Saves the current buffer to an output file.
      Parameters:
      outFile - - the output file
      Returns:
      OK_RC or FILE_EXISTS_RC
      Throws:
      IOException - if IO problem
    • genJavaBranch

      protected final 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(JavaCCOptions n)
      Visits a JavaCCOptions node, whose child is the following :

      f0 -> [ #0 "options" #1 "{"
      .. .. . #2 ( OptionBinding() )*
      .. .. . #3 "}" ]
      s: -1270729337

      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 invalid input: '<' 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(AccessModifier n)
      Visits a AccessModifier node, whose child is the following :

      f0 -> ( %0 "public"
      .. .. | %1 "protected"
      .. .. | %2 "private"
      .. .. | %3 "final" )*
      s: -1053437682

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

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

      f0 -> "TOKEN_MGR_DECLS"
      f1 -> ":"
      f2 -> ClassOrInterfaceBody()
      s: -1566997219

      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 invalid input: '<' IDENTIFIER > ]
      s: -1949948808

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

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

      f0 -> ComplexRegularExpression()
      f1 -> ( #0 "|" #1 ComplexRegularExpression() )*
      s: -1240933595

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

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

      f0 -> ( ComplexRegularExpressionUnit() )+
      s: 896313544

      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 "invalid input: '<'" #1 IdentifierAsString() #2 ">"
      .. .. | %2 CharacterList()
      .. .. | %3 #0 "(" #1 ComplexRegularExpressionChoices() #2 ")"
      .. .. . .. #3 ( invalid input: '&'0 "+"
      .. .. . .. .. | invalid input: '&'1 "*"
      .. .. . .. .. | invalid input: '&'2 "?"
      .. .. . .. .. | invalid input: '&'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
    • visit

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

      f0 -> StringLiteral()
      f1 -> [ #0 "-" #1 StringLiteral() ]
      s: 895087809

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

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

      f0 -> invalid input: '<' IDENTIFIER >
      s: -1580059612

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

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

      f0 -> invalid input: '<' INTEGER_LITERAL >
      s: -1048223857

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

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

      f0 -> invalid input: '<' STRING_LITERAL >
      s: 241433948

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