f0 -> ( <UNIX_SELF_EXECUTABLE_COMMENT> )? f1 -> Program(false) f2 -> <EOF>
f0 -> ( EvaluationUnit() )*
f0 -> ScopeBlock() | VariableDeclarationBlock() | FunctionDeclaration() | TryStatement() | ForLoopStatement() | CollectionForLoopStatement() | WhileLoopStatement() | ConditionalStatement() | SynchronizedStatement() | ReturnStatement() | BreakStatement() | ContinueStatement() | ExpressionBlock() | ThrowBlock() | ImportBlock() | MixinBlock() | EvalBlock()
f0 -> "{" f1 -> Program(false) f2 -> "}"
f0 -> VariableDeclaration() f1 -> ";"
f0 -> Expression() f1 -> ";"
f0 -> "throw" f1 -> Expression() f2 -> ";"
f0 -> "import" f1 -> Expression() f2 -> ";"
f0 -> "mixin" f1 -> Expression() f2 -> ";"
f0 -> "eval" f1 -> Expression() f2 -> ";"
f0 -> Permissions(true) f1 -> "var" f2 -> <IDENTIFIER> f3 -> ( "=" Expression() )?
f0 -> Permissions(true) f1 -> "function" f2 -> <IDENTIFIER> f3 -> "(" f4 -> ( Arglist() )? f5 -> ")" f6 -> ( "extends" PrimaryExpressionWithTrailingFxnCallExpList() FunctionCallExpressionList() )? f7 -> "{" f8 -> Program(true) f9 -> "}"
f0 -> Permissions(false) f1 -> <IDENTIFIER> f2 -> ( "," Permissions(false) <IDENTIFIER> )* f3 -> ( "..." )?
f0 -> "try" f1 -> EvaluationUnit() f2 -> ( "catch" "(" Expression() <IDENTIFIER> ")" EvaluationUnit() )* f3 -> ( "catch" "(" <IDENTIFIER> ")" EvaluationUnit() )? f4 -> ( "finally" EvaluationUnit() )?
f0 -> "for" f1 -> "(" f2 -> ( PreLoopStatement() )? f3 -> ";" f4 -> ( Expression() )? f5 -> ";" f6 -> ( Expression() )? f7 -> ")" f8 -> EvaluationUnit()
f0 -> "for" f1 -> "(" f2 -> PreLoopStatement() f3 -> ":" f4 -> Expression() f5 -> ")" f6 -> EvaluationUnit()
f0 -> VariableDeclaration() | Expression()
f0 -> "while" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> EvaluationUnit()
f0 -> "if" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> EvaluationUnit() f5 -> ( "else" EvaluationUnit() )?
f0 -> "synchronized" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> EvaluationUnit()
f0 -> "return" f1 -> ( Expression() )? f2 -> ";"
f0 -> "break" f1 -> ";"
f0 -> "continue" f1 -> ";"
f0 -> AssignmentExpression() f1 -> ( "," AssignmentExpression() )*
f0 -> "(" f1 -> ( FunctionCallExpressionListBody() )? f2 -> ")"
f0 -> ConditionalExpression() f1 -> ( ( "=" | "+=" | "-=" | "*=" | "/=" | "%=" | ">>=" | "<<=" | ">>>=" | "&=" | "^=" | "|=" ) ConditionalExpression() )*
f0 -> LogicalOrExpression() f1 -> ( "?" LogicalOrExpression() ":" LogicalOrExpression() )?
f0 -> LogicalAndExpression() f1 -> ( "||" LogicalAndExpression() )*
f0 -> BitwiseOrExpression() f1 -> ( "&&" BitwiseOrExpression() )*
f0 -> BitwiseXorExpression() f1 -> ( "|" BitwiseXorExpression() )*
f0 -> BitwiseAndExpression() f1 -> ( "^" BitwiseAndExpression() )*
f0 -> EqualityExpression() f1 -> ( "&" EqualityExpression() )*
f0 -> RelationalExpression() f1 -> ( ( "==" | "!=" ) RelationalExpression() )*
f0 -> ShiftExpression() f1 -> ( ( "<" | ">" | ">=" | "<=" | "instanceof" ) ShiftExpression() )*
f0 -> AdditiveExpression() f1 -> ( ( "<<" | ">>" | ">>>" ) AdditiveExpression() )*
f0 -> MultiplicativeExpression() f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
f0 -> UnaryExpression() f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
f0 -> ( ( "++" | "--" | "+" | "-" | "~" | "!" ) )? f1 -> PostfixExpression()
f0 -> TypeExpression() f1 -> ( "++" | "--" )?
f0 -> AllocationExpression() | CastExpression() | PrimaryExpression()
f0 -> "new" f1 -> PrimaryExpressionWithTrailingFxnCallExpList() f2 -> FunctionCallExpressionList()
f0 -> "(" f1 -> PrimaryExpressionNotFunction() f2 -> ")" f3 -> PrimaryExpression()
f0 -> PrimaryPrefix() f1 -> ( PrimaryPostfix() )*
f0 -> PrimaryPrefixNotFunction() f1 -> ( PrimaryPostfix() )*
f0 -> PrimaryPrefix() f1 -> ( PrimaryPostfixWithTrailingFxnCallExpList() )*
f0 -> PrimaryPrefixNotFunction() | FunctionPrimaryPrefix() | ShorthandFunctionPrimaryPrefix()
f0 -> ThisPrimaryPrefix() | SuperPrimaryPrefix() | CalleePrimaryPrefix() | ArrayDeclarationPrimaryPrefix() | IdentifierPrimaryPrefix() | ParenPrimaryPrefix() | Literal()
f0 -> "this"
f0 -> "super"
f0 -> "callee"
f0 -> <IDENTIFIER>
f0 -> "(" f1 -> Expression() f2 -> ")"
f0 -> "function" f1 -> "(" f2 -> ( Arglist() )? f3 -> ")" f4 -> ( "extends" PrimaryExpressionWithTrailingFxnCallExpList() FunctionCallExpressionList() )? f5 -> "{" f6 -> Program(true) f7 -> "}"
f0 -> "'{" f1 -> Program(true) f2 -> "}"
f0 -> "[" f1 -> ( FunctionCallExpressionListBody() )? f2 -> "]"
f0 -> FunctionCallPrimaryPostfix() | ArraySubscriptPrimaryPostfix() | ThisScopeQualifierPrimaryPostfix() | PropertyIdentifierPrimaryPostfix()
f0 -> ArraySubscriptPrimaryPostfix() | ThisScopeQualifierPrimaryPostfix() | PropertyIdentifierPrimaryPostfix()
f0 -> FunctionCallExpressionList()
f0 -> "[" f1 -> Expression() f2 -> ( ".." Expression() )? f3 -> "]"
f0 -> "." f1 -> <IDENTIFIER>
f0 -> "." f1 -> "this"
f0 -> <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <STRING_LITERAL> | <REGEXP_LITERAL> | "true" | "false" | "null" | "undefined"
f0 -> ( "static" | "const" | "private" | "protected" | "public" )*