Eagle Legacy Modernization, LLC

Javascript Grammar

Main program: Javascript_Program

Javascript syntax:

 Count  Terminals:
  Javascript_Class_Definition: An identifier
  Javascript_Class_Reference: An identifier
100 Javascript_Comment: /* comment */ or // comment to end of line
164 Javascript_Field_Definition: An identifier
224 Javascript_Function_Definition: An identifier
  Javascript_Function_Reference: An identifier
  Javascript_HexNumber: A hex number
13,083 Javascript_Identifier_Reference: An identifier
8 Javascript_Label_Definition: An identifier
3,158 Javascript_Literal: literal, depends on back tick (`)
2,519 Javascript_Number: exponent_chars:eE suffix_chars:none trailing_period:yes ignore_char:none
44 Javascript_RegularExpression: A regular expression
  Javascript_TemplateLiteral: quotes:` escape:\ doubled:no multiline:yes
2,000 Javascript_Variable_Definition: An identifier
 Count  Statistics(*) Tokens:
942 all all all Javascript_AdditiveExpression: Javascript_Expression ("+"|"-") Javascript_Expression
1,580 all all all Javascript_AssignmentExpression: Javascript_Expression ("="|"*="|"/="|"%="|"+="|"-="|"<<="|">>="|">>>="|"&="|"^="|"|=") Javascript_Expression
2 all all all Javascript_BitwiseAndExpression: Javascript_Expression '&' Javascript_Expression
    Javascript_BitwiseNotExpression: '~' Javascript_Expression
2 all all all Javascript_BitwiseOrExpression: Javascript_Expression '|' Javascript_Expression
918 all Javascript_BuiltInVar: ("arguments"|"false"|"null"|"String"|"super"|"this"|"true")
    Javascript_CastExpression: '(' Javascript_Type ')' Javascript_Expression
66 all all all Javascript_ClassCreationExpression: "new" Javascript_Type Javascript_ParenthesizedExpression
    Javascript_ClassCreationWithInitializers: "new" Javascript_Type '{' Javascript_ArgumentList '}'
    Javascript_ClassCreationWithSubscript: "new" Javascript_Type Javascript_Subscript*
    Javascript_ClassExpr: "class" [Javascript_Class_Definition] [Javascript_ClassExtends] '{' Javascript_ClassElement* '}'
    Javascript_CommentExpression: Javascript_Comment Javascript_Expression
9 all all Javascript_DeleteExpression: "delete" Javascript_Expression
    Javascript_DotClass: Javascript_Type '.' "class"
    Javascript_EllipsisExpr: "..." Javascript_Expression
443 all all all none Javascript_EqualityExpression: Javascript_Expression ("!=="|"==="|"=="|"!=") Javascript_Expression [Javascript_Comment]
81 all none none all Javascript_ExpressionList: '{' [Javascript_Comment]* [Javascript_ArgumentList] '}'
1,736 all all Javascript_FunctionCall: Javascript_Variable Javascript_ParenthesizedExpression
23 all all all Javascript_InExpression: Javascript_Expression "in" Javascript_Expression
6 all all all Javascript_InstanceOfExpression: Javascript_Expression "instanceof" Javascript_Type
366 all all all Javascript_LogicalAndExpression: Javascript_Expression "&&" Javascript_Expression
283 all all Javascript_LogicalNotExpression: '!' Javascript_Expression
217 all all all Javascript_LogicalOrExpression: Javascript_Expression "||" Javascript_Expression
    Javascript_LogicalXorExpression: Javascript_Expression '^' Javascript_Expression
117 all all all Javascript_MultiplicativeExpression: Javascript_Expression ("*"|"/"|"%") Javascript_Expression
5 all all Javascript_NegativeExpression: ("-"|"+") Javascript_Expression
38 all all Javascript_NewNoArgsExpression: "new" Javascript_Type
99 all 9.79 none none all Javascript_ObjectLiteral: '{' Javascript_ObjectLiteralItem* [','] [Javascript_Comment]* '}'
534 (all | none) |   Javascript_ObjectLiteralItem: (Javascript_ObjecLiteraltData | Javascript_ObjectFunction)
534 all all |   |   Javascript_ObjecLiteraltData: Javascript_ObjectFieldName [Javascript_ObjectFieldValue]
534 (none | 69% | 31%) |   |   |   Javascript_ObjectFieldName: (Javascript_Number | Javascript_Literal | Javascript_Field_Definition)
534 all all |   |   |   Javascript_ObjectFieldValue: ':' Javascript_Expression
    |   |   Javascript_ObjectFunction: [Javascript_Comment]* ["static"] [("get"|"set")] Javascript_FunctionImplementation
334 all Javascript_Parenthesized_Expression: Javascript_ParenthesizedExpression
157 all all Javascript_PostIncrementExpression: Javascript_Variable ("++"|"--")
    Javascript_Power_Expression: Javascript_Expression "**" Javascript_Expression
16 all all Javascript_PreIncrementExpression: ("++"|"--") Javascript_Variable
317 all all all Javascript_RelationalExpression: Javascript_Expression ("<"|">"|"<="|">=") Javascript_Expression
2 all all all Javascript_ShiftExpression: Javascript_Expression (">>>"|"<<"|">>") Javascript_Expression
197 all 56% 5.78(44%) all Javascript_SimpleArray: '[' [Javascript_Expression] [Javascript_MoreArray]* ']'
503 all 99% |   Javascript_MoreArray: ',' [Javascript_Expression]
429 all all all Javascript_Subfield: Javascript_Expression '.' Javascript_Expression
5 all all all all Javascript_SubscriptExpression: Javascript_Expression '[' Javascript_Expression ']'
    Javascript_TemplateExpr: [Javascript_Function_Reference] Javascript_TemplateLiteral
229 all all none all all none all Javascript_TrueFalseExpression: Javascript_Expression '?' [Javascript_Comment]* Javascript_Expression ':' [Javascript_Comment]* Javascript_Expression
38 all all Javascript_TypeOfExpr: "typeof" Javascript_Expression
6,524 all Javascript_VariableExpression: Javascript_Variable
31 all all Javascript_VoidExpr: "void" Javascript_Number
    Javascript_AwaitFunctionCall: "await" ["new"] Javascript_Variable [Javascript_ParenthesizedExpression]
1 all all all all Javascript_EvalFunction: "eval" '(' Javascript_Expression ')'
429 all 0% Javascript_FunctionExpr: Javascript_Function [Javascript_ParenthesizedExpression]
2 all all all all Javascript_LambdaFunction: ["async"] Javascript_LambdaParams "=>" Javascript_LambdaBody
2 (all | none) |   Javascript_LambdaBody: (Javascript_FunctionBody | Javascript_Element)
2 (all | none) |   Javascript_LambdaParams: (Javascript_LambdaManyParams | Javascript_Variable_Definition)
2 all 3.00(50%) all |   |   Javascript_LambdaManyParams: '(' [Javascript_Variable_Definition]* ')'
158 all all all Javascript_Length: Javascript_Variable '.' "length"
14 all all all all all all Javascript_MathFloor: "Math" '.' "floor" '(' Javascript_Expression ')'
11 all all all all Javascript_ParenthesizedFunction: '(' Javascript_Function ')' Javascript_ParenthesizedExpression
    Javascript_StartsWith: Javascript_Variable '.' "startsWith" '(' Javascript_Expression [','] [Javascript_Expression] ')'
488 all all all all all all Javascript_StrangeFunction: '(' Javascript_Number ',' Javascript_Variable ')' Javascript_ParenthesizedExpression
12 all all all all Javascript_StringFunction: "String" '(' Javascript_Expression ')'
    Javascript_ArgumentList: Javascript_Expression [Javascript_Comment]* [Javascript_MoreArguments]* [',']
    |   Javascript_MoreArguments: ',' [Javascript_Comment]* Javascript_Expression [Javascript_Comment]*
    Javascript_Class: ["export"] "class" Javascript_Class_Definition [Javascript_ClassExtends] '{' [Javascript_ClassElement]* '}'
    |   Javascript_ClassElement: (Javascript_Method | Javascript_Element)
    |   Javascript_ClassExtends: "extends" Javascript_Class_Reference*
    |   Javascript_Method: "static" [("get"|"set")] Javascript_Function_Definition '(' [Javascript_FunctionParameters] ')' Javascript_FunctionBody
831 all all 81% 1.62(10%) 99% Javascript_Data: Javascript_Type Javascript_Variable_Definition [Javascript_InitData] [Javascript_More_Variables]* [';']
823 all all |   Javascript_InitData: '=' Javascript_Expression
181 all none all 82% |   Javascript_More_Variables: ',' [Javascript_Comment]* Javascript_Variable_Definition [Javascript_InitData]
814 0% all Javascript_Element: [Javascript_Label] Javascript_Statement
8 all all |   Javascript_Label: Javascript_Label_Definition ':'
3,785 (100% | 0%) |   Javascript_StatementOrComment: (Javascript_Statement | Javascript_Comment)
21,159 (none | 9% | 13% | 0% | 1% | 0% | none | 0% | none | none | 0% | 0% | 0% | 0% | none | none | 0% | none | 8% | 0% | 1% | 0% | none | 1% | 4% | none | 0% | 31% | 2% | 0% | 2% | 1% | none | 0% | 2% | none | 0% | 0% | none | 0% | 2% | none | 1% | 4% | 0% | 1% | 0% | 0% | 2% | 0% | none | 0% | 2% | 1% | 1% | 7%) Javascript_Expression: (Javascript_HexNumber | Javascript_Number | Javascript_Literal | Javascript_RegularExpression | Javascript_Length | Javascript_MathFloor | Javascript_StartsWith | Javascript_EvalFunction | Javascript_DotClass | Javascript_CastExpression | Javascript_ExpressionList | Javascript_StringFunction | Javascript_DeleteExpression | Javascript_ClassCreationExpression | Javascript_ClassCreationWithInitializers | Javascript_ClassCreationWithSubscript | Javascript_NewNoArgsExpression | Javascript_AwaitFunctionCall | Javascript_FunctionCall | Javascript_PreIncrementExpression | Javascript_PostIncrementExpression | Javascript_NegativeExpression | Javascript_BitwiseNotExpression | Javascript_LogicalNotExpression | Javascript_BuiltInVar | Javascript_TemplateExpr | Javascript_LambdaFunction | Javascript_VariableExpression | Javascript_StrangeFunction | Javascript_ParenthesizedFunction | Javascript_Parenthesized_Expression | Javascript_SimpleArray | Javascript_CommentExpression | Javascript_ObjectLiteral | Javascript_FunctionExpr | Javascript_ClassExpr | Javascript_TypeOfExpr | Javascript_VoidExpr | Javascript_EllipsisExpr | Javascript_SubscriptExpression | Javascript_Subfield | Javascript_Power_Expression | Javascript_MultiplicativeExpression | Javascript_AdditiveExpression | Javascript_ShiftExpression | Javascript_RelationalExpression | Javascript_InstanceOfExpression | Javascript_InExpression | Javascript_EqualityExpression | Javascript_BitwiseAndExpression | Javascript_LogicalXorExpression | Javascript_BitwiseOrExpression | Javascript_LogicalAndExpression | Javascript_LogicalOrExpression | Javascript_TrueFalseExpression | Javascript_AssignmentExpression)
664 all all all all all Javascript_Function: [("static"|"async")] ["export"] ["default"] ["function"] Javascript_FunctionImplementation
664 34% all 69% none all none all |   Javascript_FunctionImplementation: [Javascript_Function_Definition] '(' [Javascript_FunctionParameters] [Javascript_Comment]* ')' [Javascript_Comment]* Javascript_FunctionBody
666 all 3.16(98%) all Javascript_FunctionBody: '{' [Javascript_StatementOrComment]* '}'
460 all 2.02(50%) Javascript_FunctionParameters: Javascript_FunctionParameter [Javascript_MoreParameters]*
925 all none |   Javascript_FunctionParameter: Javascript_ParameterName [Javascript_ParameterInitValue]
    |   |   Javascript_ParameterInitValue: '=' Javascript_Expression
925 (all | none) |   |   Javascript_ParameterName: (Javascript_Variable_Definition | '$')
465 all none all |   Javascript_MoreParameters: ',' [Javascript_Comment] Javascript_FunctionParameter
2,636 all 2.90(92%) none all Javascript_ParenthesizedExpression: '(' [Javascript_Expression]* [','] ')'
125 9.94(62%) Javascript_Program: [Javascript_TopElement]*
775 (8% | 28% | 64% | none) |   Javascript_TopElement: (Javascript_Comment | Javascript_Function | Javascript_Statement | Javascript_Class)
5,107 (9% | 16% | 0% | 1% | 0% | 0% | 2% | 4% | 0% | 0% | 9% | none | 7% | 0% | 0% | 1% | 0% | 50%) Javascript_Statement: (Javascript_StatementBlock | Javascript_Data | ';' | Javascript_BreakStatement | Javascript_ContinueStatement | Javascript_DoStatement | Javascript_DocumentWriteln | Javascript_ForStatement | Javascript_ForEachStatement | Javascript_Function | Javascript_IfStatement | Javascript_ImportStatement | Javascript_ReturnStatement | Javascript_SwitchStatement | Javascript_ThrowStatement | Javascript_TryStatement | Javascript_WhileStatement | Javascript_ExpressionStmt)
479 all all all Javascript_Subscript: '[' Javascript_Expression ']'
1,043 (92% | 8%) Javascript_Type: (("const"|"let"|"var"|"Array"|"Date"|"Image"|"String") | Javascript_Variable)
9,344 all 1.30(35%) Javascript_Variable: Javascript_VariableIdentifier [Javascript_VariableQualifier]*
9,344 (none | 99% | 1% | none) |   Javascript_VariableIdentifier: (Javascript_CastedVariable | Javascript_Identifier_Reference | ("this") | ("$"|"_"))
    |   |   Javascript_CastedVariable: '(' '(' Javascript_Type ')' Javascript_Identifier_Reference ')'
4,289 (89% | 11%) |   Javascript_VariableQualifier: (Javascript_VarField | Javascript_Subscript)
3,810 all all |   |   Javascript_VarField: '.' Javascript_Identifier_Reference
39 all 21% 72% Javascript_BreakStatement: "break" [Javascript_Identifier_Reference] [';']
1 all all Javascript_ContinueStatement: "continue" [';']
2 all all all all all all 50% Javascript_DoStatement: "do" Javascript_Element "while" '(' Javascript_Expression ')' [';']
110 all all all all all all all Javascript_DocumentWriteln: "document" '.' ("write"|"writeln") '(' Javascript_Expression ')' ';'
2,542 all 1.00(1%) 87% Javascript_ExpressionStmt: Javascript_Expression [Javascript_MoreStatements]* [';']
20 all all |   Javascript_MoreStatements: ',' Javascript_Statement
7 all all all all none all Javascript_ForEachStatement: "for" '(' Javascript_ForCollectionStatement ')' [Javascript_Comment]* Javascript_Element
7 all 57% none all all |   Javascript_ForCollectionStatement: [Javascript_Type] [Javascript_Variable] [Javascript_ForVariables] Javascript_InOrColon Javascript_Expression
    |   |   Javascript_ForVariables: '[' Javascript_Variable_Definition* ']'
7 (none | all) |   |   Javascript_InOrColon: (':' | ("in"|"of"))
184 all all all all none all Javascript_ForStatement: "for" '(' Javascript_ForLoopStatement ')' [Javascript_Comment]* Javascript_Element
184 98% all 96% 1.89(15%) all all all 94% 1% 1% |   Javascript_ForLoopStatement: [Javascript_ForLoopVariable] ['='] [Javascript_Expression] [Javascript_More_Variables]* ';' [Javascript_Expression] ';' [Javascript_Expression] [','] [Javascript_Expression]
180 (53% | 47%) |   |   Javascript_ForLoopVariable: (Javascript_ForLoopVariableWithType | Javascript_ForLoopVariableNoType)
85 all |   Javascript_ForLoopVariableNoType: Javascript_Variable
95 all all |   Javascript_ForLoopVariableWithType: Javascript_Type Javascript_Variable
482 all all 1.02 none all 1.00(2%) all 1.12(4%) 15% Javascript_IfStatement: "if" '(' Javascript_Expression* [Javascript_Comment]* ')' [Javascript_Comment]* Javascript_Element [Javascript_Comment]* [Javascript_IfElseClause]
70 all 3% all |   Javascript_IfElseClause: "else" [Javascript_Comment] Javascript_Element
    Javascript_ImportStatement: "import" Javascript_ImportElement* [';']
    |   Javascript_ImportElement: Javascript_ImportWhat [Javascript_ImportAs] [Javascript_ImportFrom]
    |   |   Javascript_ImportAs: "as" Javascript_Identifier_Reference
    |   |   Javascript_ImportFrom: "from" Javascript_Literal
    |   |   Javascript_ImportWhat: (Javascript_ImportBraces | Javascript_Identifier_Reference | Javascript_Literal)
    |   |   |   Javascript_ImportBraces: '{' Javascript_Identifier_Reference* '}'
361 all 95% 43% Javascript_ReturnStatement: "return" [Javascript_Expression] [';']
449 2% all 2.41(98%) none all Javascript_StatementBlock: [Javascript_Label] '{' [Javascript_StatementOrComment]* [';'] '}'
3 all all all all all 4.00 67% all Javascript_SwitchStatement: "switch" '(' Javascript_Expression ')' '{' Javascript_CaseClause* [Javascript_DefaultClause] '}'
12 all all all 1.92(all) |   Javascript_CaseClause: "case" Javascript_Expression ':' [Javascript_StatementOrComment]*
2 all all 1.00 |   Javascript_DefaultClause: "default" ':' Javascript_StatementOrComment*
16 all all 6% 6% 94% Javascript_ThrowStatement: "throw" Javascript_Expression [','] [Javascript_Expression] [';']
61 all all 13.19(79%) all all none Javascript_TryStatement: "try" '{' [Javascript_StatementOrComment]* '}' [Javascript_CatchBlock] [Javascript_FinallyBlock]
61 all all all all all |   Javascript_CatchBlock: "catch" '(' Javascript_Variable_Definition ')' Javascript_Element
    |   Javascript_FinallyBlock: "finally" Javascript_Element
8 all all all all all Javascript_WhileStatement: "while" '(' Javascript_Expression ')' Javascript_Element

Terminals = 14 (instances=21,300)
Tokens = 126 (instances=93,282)

(*) Statistics are shown in the same order as the Tokens.
Percentages are rounded; 'all' and 'none' mean 100% and 0% before rounding.
For lists, it shows the average number of occurrences, excluding empty lists.