Eagle Legacy Modernization, LLC

Javascript Grammar

Main program: Javascript_Program

Javascript syntax:

 Count  Terminals:
  Javascript_Class_Definition: An identifier
  Javascript_Class_Reference: An identifier
120 Javascript_Comment: /* comment */ or // comment to end of line
1,315 Javascript_Field_Definition: An identifier
262 Javascript_Function_Definition: An identifier
  Javascript_Function_Reference: An identifier
  Javascript_HexNumber: A hex number
38,567 Javascript_Identifier_Reference: An identifier
24 Javascript_Label_Definition: An identifier
7,120 Javascript_Literal: Literal quotes:`"' escape:\ doubled:no multiline:yes
6,386 Javascript_Number: Number exponent_chars:eE suffix_chars:none trailing_period:yes ignore_char:none
124 Javascript_RegularExpression: A regular expression
  Javascript_TemplateLiteral: Literal quotes:` escape:\ doubled:no multiline:yes
5,054 Javascript_Variable_Definition: An identifier
 Count  Statistics(*) Tokens:
1,674 all all all Javascript_AdditiveExpression: Javascript_Expression ("+"|"-") Javascript_Expression
4,231 all all all Javascript_AssignmentExpression: Javascript_Expression ("="|"*="|"/="|"%="|"+="|"-="|"<<="|">>="|">>>="|"&="|"^="|"|=") Javascript_Expression
6 all all all Javascript_BitwiseAndExpression: Javascript_Expression '&' Javascript_Expression
    Javascript_BitwiseNotExpression: '~' Javascript_Expression
6 all all all Javascript_BitwiseOrExpression: Javascript_Expression '|' Javascript_Expression
2,646 all Javascript_BuiltInVar: ("arguments"|"false"|"null"|"String"|"super"|"this"|"true")
    Javascript_CastExpression: '(' Javascript_Type ')' Javascript_Expression
156 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
37 all all Javascript_DeleteExpression: "delete" Javascript_Expression
    Javascript_DotClass: Javascript_Type '.' "class"
    Javascript_EllipsisExpr: "..." Javascript_Expression
1,191 all all all none Javascript_EqualityExpression: Javascript_Expression ("!=="|"==="|"=="|"!=") Javascript_Expression [Javascript_Comment]
283 all 1.00(0%) none all Javascript_ExpressionList: '{' [Javascript_Comment]* [Javascript_ArgumentList] '}'
4,070 all all Javascript_FunctionCall: Javascript_Variable Javascript_ParenthesizedExpression
65 all all all Javascript_InExpression: Javascript_Expression "in" Javascript_Expression
18 all all all Javascript_InstanceOfExpression: Javascript_Expression "instanceof" Javascript_Type
1,229 all all all Javascript_LogicalAndExpression: Javascript_Expression "&&" Javascript_Expression
870 all all Javascript_LogicalNotExpression: '!' Javascript_Expression
724 all all all Javascript_LogicalOrExpression: Javascript_Expression "||" Javascript_Expression
    Javascript_LogicalXorExpression: Javascript_Expression '^' Javascript_Expression
365 all all all Javascript_MultiplicativeExpression: Javascript_Expression ("*"|"/"|"%") Javascript_Expression
49 all all Javascript_NegativeExpression: ("-"|"+") Javascript_Expression
114 all all Javascript_NewNoArgsExpression: "new" Javascript_Type
548 all 7.98 none 3.00(0%) all Javascript_ObjectLiteral: '{' Javascript_ObjectLiteralItem* [','] [Javascript_Comment]* '}'
2,461 (all | none) |   Javascript_ObjectLiteralItem: (Javascript_ObjecLiteraltData | Javascript_ObjectFunction)
2,461 all all |   |   Javascript_ObjecLiteraltData: Javascript_ObjectFieldName [Javascript_ObjectFieldValue]
2,461 (none | 47% | 53%) |   |   |   Javascript_ObjectFieldName: (Javascript_Number | Javascript_Literal | Javascript_Field_Definition)
2,461 all all |   |   |   Javascript_ObjectFieldValue: ':' Javascript_Expression
    |   |   Javascript_ObjectFunction: [Javascript_Comment]* ["static"] [("get"|"set")] Javascript_FunctionImplementation
929 all Javascript_Parenthesized_Expression: Javascript_ParenthesizedExpression
383 all all Javascript_PostIncrementExpression: Javascript_Variable ("++"|"--")
    Javascript_Power_Expression: Javascript_Expression "**" Javascript_Expression
38 all all Javascript_PreIncrementExpression: ("++"|"--") Javascript_Variable
719 all all all Javascript_RelationalExpression: Javascript_Expression ("<"|">"|"<="|">=") Javascript_Expression
6 all all all Javascript_ShiftExpression: Javascript_Expression (">>>"|"<<"|">>") Javascript_Expression
864 all 62% 4.57(48%) all Javascript_SimpleArray: '[' [Javascript_Expression] [Javascript_MoreArray]* ']'
1,909 all 99% |   Javascript_MoreArray: ',' [Javascript_Expression]
1,352 all all all Javascript_Subfield: Javascript_Expression '.' Javascript_Expression
25 all all all all Javascript_SubscriptExpression: Javascript_Expression '[' Javascript_Expression ']'
    Javascript_TemplateExpr: [Javascript_Function_Reference] Javascript_TemplateLiteral
705 all all none all all none all Javascript_TrueFalseExpression: Javascript_Expression '?' [Javascript_Comment]* Javascript_Expression ':' [Javascript_Comment]* Javascript_Expression
171 all all Javascript_TypeOfExpr: "typeof" Javascript_Expression
18,748 all Javascript_VariableExpression: Javascript_Variable
93 all all Javascript_VoidExpr: "void" Javascript_Number
    Javascript_AwaitFunctionCall: "await" ["new"] Javascript_Variable [Javascript_ParenthesizedExpression]
3 all all all all Javascript_EvalFunction: "eval" '(' Javascript_Expression ')'
1,422 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]* ')'
504 all all all Javascript_Length: Javascript_Variable '.' "length"
40 all all all all all all Javascript_MathFloor: "Math" '.' "floor" '(' Javascript_Expression ')'
47 all all all all Javascript_ParenthesizedFunction: '(' Javascript_Function ')' Javascript_ParenthesizedExpression
    Javascript_StartsWith: Javascript_Variable '.' "startsWith" '(' Javascript_Expression [','] [Javascript_Expression] ')'
1,464 all all all all all all Javascript_StrangeFunction: '(' Javascript_Number ',' Javascript_Variable ')' Javascript_ParenthesizedExpression
36 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
1,809 all all 80% 1.74(15%) 99% Javascript_Data: Javascript_Type Javascript_Variable_Definition [Javascript_InitData] [Javascript_More_Variables]* [';']
1,940 all all |   Javascript_InitData: '=' Javascript_Expression
628 all none all 79% |   Javascript_More_Variables: ',' [Javascript_Comment]* Javascript_Variable_Definition [Javascript_InitData]
2,213 0% all Javascript_Element: [Javascript_Label] Javascript_Statement
24 all all |   Javascript_Label: Javascript_Label_Definition ':'
10,043 (100% | 0%) |   Javascript_StatementOrComment: (Javascript_Statement | Javascript_Comment)
56,760 (none | 9% | 11% | 0% | 1% | 0% | none | 0% | none | none | 0% | 0% | 0% | 0% | none | none | 0% | none | 7% | 0% | 1% | 0% | none | 2% | 5% | none | 0% | 33% | 3% | 0% | 2% | 2% | none | 1% | 3% | none | 0% | 0% | none | 0% | 2% | none | 1% | 3% | 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)
1,730 all all all all all Javascript_Function: [("static"|"async")] ["export"] ["default"] ["function"] Javascript_FunctionImplementation
1,730 15% all 70% none all none all |   Javascript_FunctionImplementation: [Javascript_Function_Definition] '(' [Javascript_FunctionParameters] [Javascript_Comment]* ')' [Javascript_Comment]* Javascript_FunctionBody
1,732 all 2.87(98%) all Javascript_FunctionBody: '{' [Javascript_StatementOrComment]* '}'
1,219 all 1.91(52%) Javascript_FunctionParameters: Javascript_FunctionParameter [Javascript_MoreParameters]*
2,436 all none |   Javascript_FunctionParameter: Javascript_ParameterName [Javascript_ParameterInitValue]
    |   |   Javascript_ParameterInitValue: '=' Javascript_Expression
2,436 (all | none) |   |   Javascript_ParameterName: (Javascript_Variable_Definition | '$')
1,217 all none all |   Javascript_MoreParameters: ',' [Javascript_Comment] Javascript_FunctionParameter
6,669 all 2.58(91%) none all Javascript_ParenthesizedExpression: '(' [Javascript_Expression]* [','] ')'
164 8.25(70%) Javascript_Program: [Javascript_TopElement]*
940 (8% | 25% | 68% | none) |   Javascript_TopElement: (Javascript_Comment | Javascript_Function | Javascript_Statement | Javascript_Class)
12,941 (12% | 14% | 0% | 1% | 0% | 0% | 1% | 3% | 0% | 0% | 10% | none | 8% | 0% | 0% | 1% | 0% | 49%) 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)
2,415 all all all Javascript_Subscript: '[' Javascript_Expression ']'
2,379 (89% | 11%) Javascript_Type: (("const"|"let"|"var"|"Array"|"Date"|"Image"|"String") | Javascript_Variable)
25,898 all 1.39(43%) Javascript_Variable: Javascript_VariableIdentifier [Javascript_VariableQualifier]*
25,898 (none | 99% | 1% | none) |   Javascript_VariableIdentifier: (Javascript_CastedVariable | Javascript_Identifier_Reference | ("this") | ("$"|"_"))
    |   |   Javascript_CastedVariable: '(' '(' Javascript_Type ')' Javascript_Identifier_Reference ')'
15,387 (84% | 16%) |   Javascript_VariableQualifier: (Javascript_VarField | Javascript_Subscript)
12,972 all all |   |   Javascript_VarField: '.' Javascript_Identifier_Reference
108 all 22% 62% Javascript_BreakStatement: "break" [Javascript_Identifier_Reference] [';']
1 all all Javascript_ContinueStatement: "continue" [';']
6 all all all all all all 50% Javascript_DoStatement: "do" Javascript_Element "while" '(' Javascript_Expression ')' [';']
113 all all all all all all all Javascript_DocumentWriteln: "document" '.' ("write"|"writeln") '(' Javascript_Expression ')' ';'
6,371 all 1.00(1%) 77% Javascript_ExpressionStmt: Javascript_Expression [Javascript_MoreStatements]* [';']
60 all all |   Javascript_MoreStatements: ',' Javascript_Statement
51 all all all all none all Javascript_ForEachStatement: "for" '(' Javascript_ForCollectionStatement ')' [Javascript_Comment]* Javascript_Element
51 all 45% none all all |   Javascript_ForCollectionStatement: [Javascript_Type] [Javascript_Variable] [Javascript_ForVariables] Javascript_InOrColon Javascript_Expression
    |   |   Javascript_ForVariables: '[' Javascript_Variable_Definition* ']'
51 (none | all) |   |   Javascript_InOrColon: (':' | ("in"|"of"))
417 all all all all none all Javascript_ForStatement: "for" '(' Javascript_ForLoopStatement ')' [Javascript_Comment]* Javascript_Element
417 97% all 95% 1.83(21%) all all all 92% 1% 1% |   Javascript_ForLoopStatement: [Javascript_ForLoopVariable] ['='] [Javascript_Expression] [Javascript_More_Variables]* ';' [Javascript_Expression] ';' [Javascript_Expression] [','] [Javascript_Expression]
404 (57% | 43%) |   |   Javascript_ForLoopVariable: (Javascript_ForLoopVariableWithType | Javascript_ForLoopVariableNoType)
173 all |   Javascript_ForLoopVariableNoType: Javascript_Variable
231 all all |   Javascript_ForLoopVariableWithType: Javascript_Type Javascript_Variable
1,276 all all 1.02 none all 1.00(1%) all 1.11(1%) 21% Javascript_IfStatement: "if" '(' Javascript_Expression* [Javascript_Comment]* ')' [Javascript_Comment]* Javascript_Element [Javascript_Comment]* [Javascript_IfElseClause]
267 all 1% 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* '}'
972 all 97% 27% Javascript_ReturnStatement: "return" [Javascript_Expression] [';']
1,501 1% all 2.14(98%) none all Javascript_StatementBlock: [Javascript_Label] '{' [Javascript_StatementOrComment]* [';'] '}'
22 all all all all all 4.18 41% all Javascript_SwitchStatement: "switch" '(' Javascript_Expression ')' '{' Javascript_CaseClause* [Javascript_DefaultClause] '}'
92 all all all 2.01(85%) |   Javascript_CaseClause: "case" Javascript_Expression ':' [Javascript_StatementOrComment]*
9 all all 1.00 |   Javascript_DefaultClause: "default" ':' Javascript_StatementOrComment*
53 all all 6% 6% 92% Javascript_ThrowStatement: "throw" Javascript_Expression [','] [Javascript_Expression] [';']
179 all all 13.41(78%) all all none Javascript_TryStatement: "try" '{' [Javascript_StatementOrComment]* '}' [Javascript_CatchBlock] [Javascript_FinallyBlock]
179 all all all all all |   Javascript_CatchBlock: "catch" '(' Javascript_Variable_Definition ')' Javascript_Element
    |   Javascript_FinallyBlock: "finally" Javascript_Element
17 all all all all all Javascript_WhileStatement: "while" '(' Javascript_Expression ')' Javascript_Element

Terminals = 14 (instances=58,972)
Tokens = 126 (instances=262,193)

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