oscript.interpreter
Class EvaluateVisitor

java.lang.Object
  extended byoscript.interpreter.EvaluateVisitor
All Implemented Interfaces:
ObjectVisitor, OscriptParserConstants

public class EvaluateVisitor
extends java.lang.Object
implements ObjectVisitor, OscriptParserConstants

The EvaluateVisitor is the heart of the interpreter.

Version:
1.123
Author:
Rob Clark (rob@ti.com)

Field Summary
 
Fields inherited from interface oscript.parser.OscriptParserConstants
ANDASSIGN, ASSIGN, BANG, BIT_AND, BIT_OR, CALLEE, CATCH, COLON, COMMA, CONST, DECIMAL_LITERAL, DECR, DEFAULT, DIGIT, DO, DOT, DOTDOTDOT, ELSE, EOF, EQ, ESCAPE_SEQUENCE, EVAL, EXPECTING_JAVADOC_TAG_ARG, EXPONENT, EXTENDS, FALSE, FINALLY, FLOATING_POINT_LITERAL, FOR, FORMAL_COMMENT, FUNCTION, GE, GT, HEX_LITERAL, HOOK, IDENTIFIER, IF, IMPORT, IN_FORMAL_COMMENT, IN_MULTI_LINE_COMMENT, IN_SINGLE_LINE_COMMENT, IN_UNIX_SELF_EXECUTABLE_COMMENT, INCR, INSTANCEOF, INTEGER_LITERAL, JAVADOC_TAG, JAVADOC_TAG_ARG, JAVADOC_TAG_WITH_ARG, LBRACE, LBRACKET, LE, LETTER, LFXNBRACE, LPAREN, LSHIFT, LSHIFTASSIGN, LT, MAYBE_JAVADOC_TAG, MINUS, MINUSASSIGN, MIXIN, MULTI_LINE_COMMENT, NE, NEW, NULL, OCTAL_LITERAL, ORASSIGN, PLUS, PLUSASSIGN, PRIVATE, PROTECTED, PUBLIC, RBRACE, RBRACKET, REGEXP_BODY, REGEXP_ESCAPE_SEQUENCE, REGEXP_FLAG, REGEXP_LITERAL, REM, REMASSIGN, RPAREN, RSIGNEDSHIFT, RSIGNEDSHIFTASSIGN, RUNSIGNEDSHIFT, RUNSIGNEDSHIFTASSIGN, SC_AND, SC_OR, SEMICOLON, SINGLE_LINE_COMMENT, SLASH, SLASHASSIGN, STAR, STARASSIGN, STATIC, STRING_LITERAL, SYNCHRONIZED, THIS, THROW, TILDE, tokenImage, TRUE, TRY, UNDEFINED, UNIX_SELF_EXECUTABLE_COMMENT, VAR, VOID, WHILE, XOR, XORASSIGN
 
Constructor Summary
EvaluateVisitor(Scope thisScope)
          Class Constructor.
 
Method Summary
 Value evaluateFunction(Program n)
           
 NodeToken getLastNodeToken()
           
 java.lang.Object visit(AdditiveExpression n, java.lang.Object argu)
           f0 -> MultiplicativeExpression() f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
 java.lang.Object visit(AllocationExpression n, java.lang.Object argu)
           f0 -> "new" f1 -> PrimaryExpressionWithTrailingFxnCallExpList() f2 -> FunctionCallExpressionList()
 java.lang.Object visit(Arglist n, java.lang.Object argu)
           f0 -> Permissions() f1 -> <IDENTIFIER> f2 -> ( "," Permissions() <IDENTIFIER> )* f3 -> ( "..." )?
 java.lang.Object visit(ArrayDeclarationPrimaryPrefix n, java.lang.Object argu)
           f0 -> "[" f1 -> (FunctionCallExpressionListBody())? f2 -> "]"
 java.lang.Object visit(ArraySubscriptPrimaryPostfix n, java.lang.Object argu)
           f0 -> "[" f1 -> Expression() f2 -> ( ".." Expression() )? f3 -> "]"
 java.lang.Object visit(AssignmentExpression n, java.lang.Object argu)
           f0 -> ConditionalExpression() f1 -> ( ( "=" | "+=" | "-=" | "*=" | "/=" | "%=" | ">>=" | "<<=" | ">>>=" | "&=" | "^=" | "|=" ) ConditionalExpression() )*
 java.lang.Object visit(BitwiseAndExpression n, java.lang.Object argu)
           f0 -> EqualityExpression() f1 -> ( "&" EqualityExpression() )*
 java.lang.Object visit(BitwiseOrExpression n, java.lang.Object argu)
           f0 -> BitwiseXorExpression() f1 -> ( "|" BitwiseXorExpression() )*
 java.lang.Object visit(BitwiseXorExpression n, java.lang.Object argu)
           f0 -> BitwiseAndExpression() f1 -> ( "^" BitwiseAndExpression() )*
 java.lang.Object visit(BreakStatement n, java.lang.Object argu)
           f0 -> "break" f1 -> ";"
 java.lang.Object visit(CalleePrimaryPrefix n, java.lang.Object argu)
           f0 -> "callee"
 java.lang.Object visit(CastExpression n, java.lang.Object argu)
           f0 -> "(" f1 -> PrimaryExpressionNotFunction() f2 -> ")" f3 -> PrimaryExpression()
 java.lang.Object visit(CollectionForLoopStatement n, java.lang.Object argu)
           f0 -> "for" f1 -> "(" f2 -> PreLoopStatement() f3 -> ":" f4 -> Expression() f5 -> ")" f6 -> EvaluationUnit()
 java.lang.Object visit(ConditionalExpression n, java.lang.Object argu)
           f0 -> LogicalOrExpression() f1 -> ( "?" LogicalOrExpression() ":" LogicalOrExpression() )?
 java.lang.Object visit(ConditionalStatement n, java.lang.Object argu)
           f0 -> "if" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> EvaluationUnit() f5 -> ( "else" EvaluationUnit() )?
 java.lang.Object visit(ContinueStatement n, java.lang.Object argu)
           f0 -> "continue" f1 -> ";"
 java.lang.Object visit(EqualityExpression n, java.lang.Object argu)
           f0 -> RelationalExpression() f1 -> ( ( "==" | "!=" ) RelationalExpression() )*
 java.lang.Object visit(EvalBlock n, java.lang.Object argu)
           f0 -> "eval" f1 -> Expression() f2 -> ";"
 java.lang.Object visit(EvaluationUnit n, java.lang.Object argu)
           f0 -> ScopeBlock() | VariableDeclarationBlock() | FunctionDeclaration() | TryStatement() | ForLoopStatement() | WhileLoopStatement() | ConditionalStatement() | SynchronizedStatement() | ReturnStatement() | BreakStatement() | ContinueStatement() | ExpressionBlock() | ThrowBlock() | ImportBlock() | MixinBlock() | EvalBlock()
 java.lang.Object visit(ExpressionBlock n, java.lang.Object argu)
           f0 -> Expression() f1 -> ";"
 java.lang.Object visit(Expression n, java.lang.Object argu)
           f0 -> AssignmentExpression() f1 -> ( "," AssignmentExpression() )*
 java.lang.Object visit(ForLoopStatement n, java.lang.Object argu)
           f0 -> "for" f1 -> "(" f2 -> ( PreLoopStatement() )? f3 -> ";" f4 -> ( Expression() )? f5 -> ";" f6 -> ( Expression() )? f7 -> ")" f8 -> EvaluationUnit()
 java.lang.Object visit(FunctionCallExpressionListBody n, java.lang.Object argu)
           f0 -> AssignmentExpression() f1 -> ( "," AssignmentExpression() )*
 java.lang.Object visit(FunctionCallExpressionList n, java.lang.Object argu)
           f0 -> "(" f1 -> ( FunctionCallExpressionListBody() )? f2 -> ")"
 java.lang.Object visit(FunctionCallPrimaryPostfix n, java.lang.Object argu)
           f0 -> FunctionCallExpressionList()
 java.lang.Object visit(FunctionDeclaration n, java.lang.Object argu)
           f0 -> Permissions() f1 -> "function" f2 -> <IDENTIFIER> f3 -> "(" f4 -> ( Arglist() )? f5 -> ")" f6 -> ( "extends" PrimaryExpressionWithTrailingFxnCallExpList() FunctionCallExpressionList() )? f7 -> "{" f8 -> Program() f9 -> "}"
 java.lang.Object visit(FunctionPrimaryPrefix n, java.lang.Object argu)
           f0 -> "function" f1 -> "(" f2 -> ( Arglist() )? f3 -> ")" f4 -> ( "extends" PrimaryExpressionWithTrailingFxnCallExpList() FunctionCallExpressionList() )? f5 -> "{" f6 -> Program() f7 -> "}"
 java.lang.Object visit(IdentifierPrimaryPrefix n, java.lang.Object argu)
           f0 -> <IDENTIFIER>
 java.lang.Object visit(ImportBlock n, java.lang.Object argu)
           f0 -> "import" f1 -> Expression() f2 -> ";"
 java.lang.Object visit(Literal n, java.lang.Object argu)
           f0 -> <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <STRING_LITERAL> | <REGEXP_LITERAL> | "true" | "false" | "null" | "undefined"
 java.lang.Object visit(LogicalAndExpression n, java.lang.Object argu)
           f0 -> BitwiseOrExpression() f1 -> ( "&&" BitwiseOrExpression() )*
 java.lang.Object visit(LogicalOrExpression n, java.lang.Object argu)
           f0 -> LogicalAndExpression() f1 -> ( "||" LogicalAndExpression() )*
 java.lang.Object visit(MixinBlock n, java.lang.Object argu)
           f0 -> "mixin" f1 -> Expression() f2 -> ";"
 java.lang.Object visit(MultiplicativeExpression n, java.lang.Object argu)
           f0 -> UnaryExpression() f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
 java.lang.Object visit(NodeList n, java.lang.Object argu)
           
 java.lang.Object visit(NodeListOptional n, java.lang.Object argu)
           
 java.lang.Object visit(NodeOptional n, java.lang.Object argu)
           
 java.lang.Object visit(NodeSequence n, java.lang.Object argu)
           
 java.lang.Object visit(NodeToken n, java.lang.Object argu)
           
 java.lang.Object visit(ParenPrimaryPrefix n, java.lang.Object argu)
           f0 -> "(" f1 -> Expression() f2 -> ")"
 java.lang.Object visit(Permissions n, java.lang.Object argu)
           f0 -> ( "static" | "const" | "private" | "protected" | "public" )*
 java.lang.Object visit(PostfixExpression n, java.lang.Object argu)
           f0 -> TypeExpression() f1 -> ( "++" | "--" )?
 java.lang.Object visit(PreLoopStatement n, java.lang.Object argu)
           f0 -> VariableDeclaration() | Expression()
 java.lang.Object visit(PrimaryExpressionNotFunction n, java.lang.Object argu)
           f0 -> PrimaryPrefix() f1 -> ( PrimaryPostfix() )*
 java.lang.Object visit(PrimaryExpression n, java.lang.Object argu)
           f0 -> PrimaryPrefix() f1 -> ( PrimaryPostfix() )*
 java.lang.Object visit(PrimaryExpressionWithTrailingFxnCallExpList n, java.lang.Object argu)
           f0 -> PrimaryPrefix() f1 -> ( PrimaryPostfixWithTrailingFxnCallExpList() )*
 java.lang.Object visit(PrimaryPostfix n, java.lang.Object argu)
           f0 -> FunctionCallPrimaryPostfix() | ArraySubscriptPrimaryPostfix() | PropertyIdentifierPrimaryPostfix()
 java.lang.Object visit(PrimaryPostfixWithTrailingFxnCallExpList n, java.lang.Object argu)
           f0 -> FunctionCallPrimaryPostfix() | ArraySubscriptPrimaryPostfix() | PropertyIdentifierPrimaryPostfix()
 java.lang.Object visit(PrimaryPrefixNotFunction n, java.lang.Object argu)
           f0 -> ThisPrimaryPrefix() | CalleePrimaryPrefix() | IdentifierPrimaryPrefix() | ParenPrimaryPrefix() | ArrayDeclarationPrimaryPrefix() | Literal()
 java.lang.Object visit(PrimaryPrefix n, java.lang.Object argu)
           f0 -> PrimaryPrefixNotFunction() | FunctionPrimaryPrefix() | ShorthandFunctionPrimaryPrefix()
 java.lang.Object visit(ProgramFile n, java.lang.Object argu)
           f0 -> ( <UNIX_SELF_EXECUTABLE_COMMENT> )? f1 -> Program(false) f2 -> <EOF>
 java.lang.Object visit(Program n, java.lang.Object argu)
           f0 -> ( EvaluationUnit() )*
 java.lang.Object visit(PropertyIdentifierPrimaryPostfix n, java.lang.Object argu)
           f0 -> "." f1 -> <IDENTIFIER>
 java.lang.Object visit(RelationalExpression n, java.lang.Object argu)
           f0 -> ShiftExpression() f1 -> ( ( "<" | ">" | ">=" | "<=" | "instanceof" ) ShiftExpression() )*
 java.lang.Object visit(ReturnStatement n, java.lang.Object argu)
           f0 -> "return" f1 -> ( Expression() )?
 java.lang.Object visit(ScopeBlock n, java.lang.Object argu)
           f0 -> "{" f1 -> Program() f2 -> "}"
 java.lang.Object visit(ShiftExpression n, java.lang.Object argu)
           f0 -> AdditiveExpression() f1 -> ( ( "<<" | ">>" | ">>>" ) AdditiveExpression() )*
 java.lang.Object visit(ShorthandFunctionPrimaryPrefix n, java.lang.Object argu)
           f0 -> "'{" f1 -> Program(true) f2 -> "}"
 java.lang.Object visit(SynchronizedStatement n, java.lang.Object argu)
           f0 -> "synchronized" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> EvaluationUnit()
 java.lang.Object visit(ThisPrimaryPrefix n, java.lang.Object argu)
           f0 -> "this"
 java.lang.Object visit(ThrowBlock n, java.lang.Object argu)
           f0 -> "throw" f1 -> Expression() f2 -> ";"
 java.lang.Object visit(TryStatement n, java.lang.Object argu)
           f0 -> "try" f1 -> EvaluationUnit() f2 -> ( "catch" "(" Expression() <IDENTIFIER> ")" EvaluationUnit() )* f3 -> ( "catch" "(" <IDENTIFIER> ")" EvaluationUnit() )? f4 -> ( "finally" EvaluationUnit() )?
 java.lang.Object visit(TypeExpression n, java.lang.Object argu)
           f0 -> AllocationExpression() | CastExpression() | PrimaryExpression()
 java.lang.Object visit(UnaryExpression n, java.lang.Object argu)
           f0 -> ( ( "++" | "--" | "+" | "-" | "~" | "!" ) )? f1 -> PostfixExpression()
 java.lang.Object visit(VariableDeclarationBlock n, java.lang.Object argu)
           f0 -> VariableDeclaration() f1 -> ";"
 java.lang.Object visit(VariableDeclaration n, java.lang.Object argu)
           f0 -> Permissions() f1 -> "var" f2 -> <IDENTIFIER> f3 -> ( "=" Expression() )?
 java.lang.Object visit(WhileLoopStatement n, java.lang.Object argu)
           f0 -> "while" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> EvaluationUnit()
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EvaluateVisitor

public EvaluateVisitor(Scope thisScope)
Class Constructor. An EvaluateVisitor is constructed to evaluate within a specified context (scope). The context' purpose is twofold: 1) it is used to implement block structure, for example:
   ... some script ...
   {
      var someVar;
      ... some script ...
   }
 
the block containing the variable someVar is evaluated in a new context (with the current context as the previous context).

It is also used for 2) implementing function/method calls. When a function/method is called, a new context is created, with the context the function/method was declared in as the previous context.

NOTE: there are cases where we re-use the EvaluateVisitor for efficiency... need to document that better.

Parameters:
thisScope - the context to evaluate within
Method Detail

getLastNodeToken

public NodeToken getLastNodeToken()

evaluateFunction

public Value evaluateFunction(Program n)

visit

public java.lang.Object visit(NodeList n,
                              java.lang.Object argu)
Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(NodeListOptional n,
                              java.lang.Object argu)
Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(NodeOptional n,
                              java.lang.Object argu)
Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(NodeSequence n,
                              java.lang.Object argu)
Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(NodeToken n,
                              java.lang.Object argu)
Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ProgramFile n,
                              java.lang.Object argu)
 f0 -> ( <UNIX_SELF_EXECUTABLE_COMMENT> )?
 f1 -> Program(false)
 f2 -> <EOF>
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(Program n,
                              java.lang.Object argu)
 f0 -> ( EvaluationUnit() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(EvaluationUnit n,
                              java.lang.Object argu)
 f0 -> ScopeBlock()
       | VariableDeclarationBlock()
       | FunctionDeclaration()
       | TryStatement()
       | ForLoopStatement()
       | WhileLoopStatement()
       | ConditionalStatement()
       | SynchronizedStatement()
       | ReturnStatement()
       | BreakStatement()
       | ContinueStatement()
       | ExpressionBlock()
       | ThrowBlock()
       | ImportBlock()
       | MixinBlock()
       | EvalBlock()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ScopeBlock n,
                              java.lang.Object argu)
 f0 -> "{"
 f1 -> Program()
 f2 -> "}"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(VariableDeclarationBlock n,
                              java.lang.Object argu)
 f0 -> VariableDeclaration()
 f1 -> ";"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ExpressionBlock n,
                              java.lang.Object argu)
 f0 -> Expression()
 f1 -> ";"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ThrowBlock n,
                              java.lang.Object argu)
 f0 -> "throw"
 f1 -> Expression()
 f2 -> ";"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ImportBlock n,
                              java.lang.Object argu)
 f0 -> "import"
 f1 -> Expression()
 f2 -> ";"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(MixinBlock n,
                              java.lang.Object argu)
 f0 -> "mixin"
 f1 -> Expression()
 f2 -> ";"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(EvalBlock n,
                              java.lang.Object argu)
 f0 -> "eval"
 f1 -> Expression()
 f2 -> ";"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(VariableDeclaration n,
                              java.lang.Object argu)
 f0 -> Permissions()
 f1 -> "var"
 f2 -> <IDENTIFIER>
 f3 -> ( "=" Expression() )?
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(FunctionDeclaration n,
                              java.lang.Object argu)
 f0 -> Permissions()
 f1 -> "function"
 f2 -> <IDENTIFIER>
 f3 -> "("
 f4 -> ( Arglist() )?
 f5 -> ")"
 f6 -> ( "extends" PrimaryExpressionWithTrailingFxnCallExpList() FunctionCallExpressionList() )?
 f7 -> "{"
 f8 -> Program()
 f9 -> "}"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(Arglist n,
                              java.lang.Object argu)
 f0 -> Permissions()
 f1 -> <IDENTIFIER>
 f2 -> ( "," Permissions() <IDENTIFIER> )*
 f3 -> ( "..." )?
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(TryStatement n,
                              java.lang.Object argu)
 f0 -> "try"
 f1 -> EvaluationUnit()
 f2 -> ( "catch" "(" Expression() <IDENTIFIER> ")" EvaluationUnit() )*
 f3 -> ( "catch" "(" <IDENTIFIER> ")" EvaluationUnit() )?
 f4 -> ( "finally" EvaluationUnit() )?
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ForLoopStatement n,
                              java.lang.Object argu)
 f0 -> "for"
 f1 -> "("
 f2 -> ( PreLoopStatement() )?
 f3 -> ";"
 f4 -> ( Expression() )?
 f5 -> ";"
 f6 -> ( Expression() )?
 f7 -> ")"
 f8 -> EvaluationUnit()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(CollectionForLoopStatement n,
                              java.lang.Object argu)
 f0 -> "for"
 f1 -> "("
 f2 -> PreLoopStatement()
 f3 -> ":"
 f4 -> Expression()
 f5 -> ")"
 f6 -> EvaluationUnit()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PreLoopStatement n,
                              java.lang.Object argu)
 f0 -> VariableDeclaration()
       | Expression()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(WhileLoopStatement n,
                              java.lang.Object argu)
 f0 -> "while"
 f1 -> "("
 f2 -> Expression()
 f3 -> ")"
 f4 -> EvaluationUnit()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ConditionalStatement n,
                              java.lang.Object argu)
 f0 -> "if"
 f1 -> "("
 f2 -> Expression()
 f3 -> ")"
 f4 -> EvaluationUnit()
 f5 -> ( "else" EvaluationUnit() )?
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(SynchronizedStatement n,
                              java.lang.Object argu)
 f0 -> "synchronized"
 f1 -> "("
 f2 -> Expression()
 f3 -> ")"
 f4 -> EvaluationUnit()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ReturnStatement n,
                              java.lang.Object argu)
 f0 -> "return"
 f1 -> ( Expression() )?
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(BreakStatement n,
                              java.lang.Object argu)
 f0 -> "break"
 f1 -> ";"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ContinueStatement n,
                              java.lang.Object argu)
 f0 -> "continue"
 f1 -> ";"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(Expression n,
                              java.lang.Object argu)
 f0 -> AssignmentExpression()
 f1 -> ( "," AssignmentExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(FunctionCallExpressionList n,
                              java.lang.Object argu)
 f0 -> "("
 f1 -> ( FunctionCallExpressionListBody() )?
 f2 -> ")"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(FunctionCallExpressionListBody n,
                              java.lang.Object argu)
 f0 -> AssignmentExpression()
 f1 -> ( "," AssignmentExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(AssignmentExpression n,
                              java.lang.Object argu)
 f0 -> ConditionalExpression()
 f1 -> ( ( "=" | "+=" | "-=" | "*=" | "/=" | "%=" | ">>=" | "<<=" | ">>>=" | "&=" | "^=" | "|=" ) ConditionalExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ConditionalExpression n,
                              java.lang.Object argu)
 f0 -> LogicalOrExpression()
 f1 -> ( "?" LogicalOrExpression() ":" LogicalOrExpression() )?
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(LogicalOrExpression n,
                              java.lang.Object argu)
 f0 -> LogicalAndExpression()
 f1 -> ( "||" LogicalAndExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(LogicalAndExpression n,
                              java.lang.Object argu)
 f0 -> BitwiseOrExpression()
 f1 -> ( "&&" BitwiseOrExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(BitwiseOrExpression n,
                              java.lang.Object argu)
 f0 -> BitwiseXorExpression()
 f1 -> ( "|" BitwiseXorExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(BitwiseXorExpression n,
                              java.lang.Object argu)
 f0 -> BitwiseAndExpression()
 f1 -> ( "^" BitwiseAndExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(BitwiseAndExpression n,
                              java.lang.Object argu)
 f0 -> EqualityExpression()
 f1 -> ( "&" EqualityExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(EqualityExpression n,
                              java.lang.Object argu)
 f0 -> RelationalExpression()
 f1 -> ( ( "==" | "!=" ) RelationalExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(RelationalExpression n,
                              java.lang.Object argu)
 f0 -> ShiftExpression()
 f1 -> ( ( "<" | ">" | ">=" | "<=" | "instanceof" ) ShiftExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ShiftExpression n,
                              java.lang.Object argu)
 f0 -> AdditiveExpression()
 f1 -> ( ( "<<" | ">>" | ">>>" ) AdditiveExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(AdditiveExpression n,
                              java.lang.Object argu)
 f0 -> MultiplicativeExpression()
 f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(MultiplicativeExpression n,
                              java.lang.Object argu)
 f0 -> UnaryExpression()
 f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(UnaryExpression n,
                              java.lang.Object argu)
 f0 -> ( ( "++" | "--" | "+" | "-" | "~" | "!" ) )?
 f1 -> PostfixExpression()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PostfixExpression n,
                              java.lang.Object argu)
 f0 -> TypeExpression()
 f1 -> ( "++" | "--" )?
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(TypeExpression n,
                              java.lang.Object argu)
 f0 -> AllocationExpression()
       | CastExpression()
       | PrimaryExpression()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(AllocationExpression n,
                              java.lang.Object argu)
 f0 -> "new"
 f1 -> PrimaryExpressionWithTrailingFxnCallExpList()
 f2 -> FunctionCallExpressionList()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(CastExpression n,
                              java.lang.Object argu)
 f0 -> "("
 f1 -> PrimaryExpressionNotFunction()
 f2 -> ")"
 f3 -> PrimaryExpression()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PrimaryExpression n,
                              java.lang.Object argu)
 f0 -> PrimaryPrefix()
 f1 -> ( PrimaryPostfix() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PrimaryExpressionNotFunction n,
                              java.lang.Object argu)
 f0 -> PrimaryPrefix()
 f1 -> ( PrimaryPostfix() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PrimaryExpressionWithTrailingFxnCallExpList n,
                              java.lang.Object argu)
 f0 -> PrimaryPrefix()
 f1 -> ( PrimaryPostfixWithTrailingFxnCallExpList() )*
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PrimaryPrefix n,
                              java.lang.Object argu)
 f0 -> PrimaryPrefixNotFunction()
       | FunctionPrimaryPrefix()
       | ShorthandFunctionPrimaryPrefix()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PrimaryPrefixNotFunction n,
                              java.lang.Object argu)
 f0 -> ThisPrimaryPrefix()
       | CalleePrimaryPrefix()
       | IdentifierPrimaryPrefix()
       | ParenPrimaryPrefix()
       | ArrayDeclarationPrimaryPrefix()
       | Literal()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ThisPrimaryPrefix n,
                              java.lang.Object argu)
 f0 -> "this"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(CalleePrimaryPrefix n,
                              java.lang.Object argu)
 f0 -> "callee"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(IdentifierPrimaryPrefix n,
                              java.lang.Object argu)
 f0 -> <IDENTIFIER>
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ParenPrimaryPrefix n,
                              java.lang.Object argu)
 f0 -> "("
 f1 -> Expression()
 f2 -> ")"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(FunctionPrimaryPrefix n,
                              java.lang.Object argu)
 f0 -> "function"
 f1 -> "("
 f2 -> ( Arglist() )?
 f3 -> ")"
 f4 -> ( "extends" PrimaryExpressionWithTrailingFxnCallExpList() FunctionCallExpressionList() )?
 f5 -> "{"
 f6 -> Program()
 f7 -> "}"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ShorthandFunctionPrimaryPrefix n,
                              java.lang.Object argu)
 f0 -> "'{"
 f1 -> Program(true)
 f2 -> "}"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ArrayDeclarationPrimaryPrefix n,
                              java.lang.Object argu)
 f0 -> "["
 f1 ->   (FunctionCallExpressionListBody())?
 f2 -> "]"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PrimaryPostfix n,
                              java.lang.Object argu)
 f0 -> FunctionCallPrimaryPostfix()
       | ArraySubscriptPrimaryPostfix()
       | PropertyIdentifierPrimaryPostfix()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PrimaryPostfixWithTrailingFxnCallExpList n,
                              java.lang.Object argu)
 f0 -> FunctionCallPrimaryPostfix()
       | ArraySubscriptPrimaryPostfix()
       | PropertyIdentifierPrimaryPostfix()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(FunctionCallPrimaryPostfix n,
                              java.lang.Object argu)
 f0 -> FunctionCallExpressionList()
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(ArraySubscriptPrimaryPostfix n,
                              java.lang.Object argu)
 f0 -> "["
 f1 -> Expression()
 f2 -> ( ".." Expression() )?
 f3 -> "]"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(PropertyIdentifierPrimaryPostfix n,
                              java.lang.Object argu)
 f0 -> "."
 f1 -> <IDENTIFIER>
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(Literal n,
                              java.lang.Object argu)
 f0 -> <INTEGER_LITERAL>
       | <FLOATING_POINT_LITERAL>
       | <STRING_LITERAL>
       | <REGEXP_LITERAL>
       | "true"
       | "false"
       | "null"
       | "undefined"
 

Specified by:
visit in interface ObjectVisitor

visit

public java.lang.Object visit(Permissions n,
                              java.lang.Object argu)
 f0 -> ( "static" | "const" | "private" | "protected" | "public" )*
 

Specified by:
visit in interface ObjectVisitor