Main program: Javascript_Program
Javascript syntax:
/* ** // == === != !== !=== <= >= => && || </ ?. ??= ?? !! ...
| Count | Terminals: | |
| Javascript_Class_Definition: An identifier | ||
| Javascript_Class_Reference: An identifier | ||
| 155 | Javascript_Comment: /* comment */ or // comment to end of line | |
| 1,604 | Javascript_Field_Definition: An identifier | |
| 267 | Javascript_Function_Definition: An identifier | |
| Javascript_Function_Reference: An identifier | ||
| Javascript_HexNumber: A hex number | ||
| 40,993 | Javascript_Identifier_Reference: An identifier | |
| 24 | Javascript_Label_Definition: An identifier | |
| 7,916 | Javascript_Literal: Literal quotes:`"' escape:\ doubled:no multiline:yes | |
| 6,484 | Javascript_Number: Number exponent_chars:eE suffix_chars:n trailing_period:yes ignore_char:none | |
| 127 | Javascript_RegularExpression: A regular expression | |
| Javascript_TemplateLiteral: Literal quotes:` escape:\ doubled:no multiline:yes | ||
| 5,491 | Javascript_Variable_Definition: An identifier | |
| Count | Statistics(*) | Tokens: |
| 1,744 | all all all | Javascript_AdditiveExpression: Javascript_Expression ("+"|"-") Javascript_Expression |
| 4,387 | 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,701 | all | Javascript_BuiltInVar: ("arguments"|"false"|"null"|"String"|"super"|"this"|"true") |
| Javascript_CastExpression: '(' Javascript_Type ')' Javascript_Expression | ||
| 180 | 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 | ||
| 42 | all all | Javascript_DeleteExpression: "delete" Javascript_Expression |
| Javascript_DotClass: Javascript_Type '.' "class" | ||
| 46 | all all | Javascript_EllipsisExpr: "..." Javascript_Expression |
| 1,252 | all all all none | Javascript_EqualityExpression: Javascript_Expression ("!=="|"==="|"=="|"!="|"??=") Javascript_Expression [Javascript_Comment] |
| 286 | all 1.00(0%) 1% all | Javascript_ExpressionList: '{' [Javascript_Comment]* [Javascript_ArgumentList] '}' |
| 4,713 | all all | Javascript_FunctionCall: Javascript_Variable Javascript_ParenthesizedExpression |
| 65 | all all all | Javascript_InExpression: Javascript_Expression "in" Javascript_Expression |
| 29 | all all all | Javascript_InstanceOfExpression: Javascript_Expression "instanceof" Javascript_Type |
| 1,242 | all all all | Javascript_LogicalAndExpression: Javascript_Expression "&&" Javascript_Expression |
| 861 | all all | Javascript_LogicalNotExpression: ("!"|"!!") Javascript_Expression |
| 740 | all all all | Javascript_LogicalOrExpression: Javascript_Expression "||" Javascript_Expression |
| Javascript_LogicalXorExpression: Javascript_Expression '^' Javascript_Expression | ||
| 369 | all all all | Javascript_MultiplicativeExpression: Javascript_Expression ("*"|"/"|"%") Javascript_Expression |
| 51 | all all | Javascript_NegativeExpression: ("-"|"+") Javascript_Expression |
| 115 | all all | Javascript_NewNoArgsExpression: "new" Javascript_Type |
| 592 | all 8.29 0% 1.67(1%) all | Javascript_ObjectLiteral: '{' Javascript_ObjectLiteralItem* [','] [Javascript_Comment]* '}' |
| 2,751 | (all | none) | | Javascript_ObjectLiteralItem: (Javascript_ObjecLiteraltData | Javascript_ObjectFunction) |
| 2,751 | all 100% | | | Javascript_ObjecLiteraltData: Javascript_ObjectFieldName [Javascript_ObjectFieldValue] |
| 2,751 | (none | 42% | 58%) | | | | Javascript_ObjectFieldName: (Javascript_Number | Javascript_Literal | Javascript_Field_Definition) |
| 2,750 | all all | | | | Javascript_ObjectFieldValue: ':' Javascript_Expression |
| | | Javascript_ObjectFunction: [Javascript_Comment]* ["static"] [("get"|"set")] Javascript_FunctionImplementation | ||
| 962 | all | Javascript_Parenthesized_Expression: Javascript_ParenthesizedExpression |
| 383 | all all | Javascript_PostIncrementExpression: Javascript_Variable ("++"|"--") |
| Javascript_Power_Expression: Javascript_Expression "**" Javascript_Expression | ||
| 46 | all all | Javascript_PreIncrementExpression: ("++"|"--") Javascript_Variable |
| 732 | all all all | Javascript_RelationalExpression: Javascript_Expression ("<"|">"|"<="|">=") Javascript_Expression |
| 9 | all all all | Javascript_ShiftExpression: Javascript_Expression (">>>"|"<<"|">>") Javascript_Expression |
| 905 | all 61% 4.50(47%) all | Javascript_SimpleArray: '[' [Javascript_Expression] [Javascript_MoreArray]* ']' |
| 1,923 | all 99% | | Javascript_MoreArray: ',' [Javascript_Expression] |
| 1,426 | 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 | ||
| 734 | all all none all all none all | Javascript_TrueFalseExpression: Javascript_Expression '?' [Javascript_Comment]* Javascript_Expression ':' [Javascript_Comment]* Javascript_Expression |
| 188 | all all | Javascript_TypeOfExpr: "typeof" Javascript_Expression |
| 19,605 | all | Javascript_VariableExpression: Javascript_Variable |
| 93 | all all | Javascript_VoidExpr: "void" Javascript_Number |
| 1 | all all all all | Javascript_AwaitFunctionCall: "await" ["new"] Javascript_Variable [Javascript_ParenthesizedExpression] |
| 3 | all all all all | Javascript_EvalFunction: "eval" '(' Javascript_Expression ')' |
| 1,534 | all 0% | Javascript_FunctionExpr: Javascript_Function [Javascript_ParenthesizedExpression] |
| 56 | all all all all | Javascript_LambdaFunction: ["async"] Javascript_LambdaParams "=>" Javascript_LambdaBody |
| 56 | (75% | 25%) | | Javascript_LambdaBody: (Javascript_FunctionBody | Javascript_Element) |
| 51 | all all 4% | | Javascript_LambdaParam: ["..."] Javascript_Variable_Definition [Javascript_LambdaInitValue] |
| 2 | all all | | | Javascript_LambdaInitValue: '=' Javascript_Expression |
| 56 | (98% | 2%) | | Javascript_LambdaParams: (Javascript_LambdaManyParams | Javascript_LambdaParam) |
| 55 | all 1.33(78%) all | | | Javascript_LambdaManyParams: '(' [Javascript_LambdaParam]* ')' |
| 527 | all all all | Javascript_Length: Javascript_Variable '.' "length" |
| 42 | all all all all all all | Javascript_MathFloor: "Math" '.' "floor" '(' Javascript_Expression ')' |
| 62 | all all all all | Javascript_ParenthesizedFunction: '(' Javascript_Function ')' Javascript_ParenthesizedExpression |
| 4 | all all all all all none none all | 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 ')' |
| 2 | all none 1.00(50%) none | Javascript_ArgumentList: Javascript_Expression [Javascript_Comment]* [Javascript_MoreArguments]* [','] |
| 1 | all none all none | | 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 | ||
| 2,056 | all all 82% 1.72(14%) 99% | Javascript_Data: Javascript_Type Javascript_Variable_Definition [Javascript_InitData] [Javascript_More_Variables]* [';'] |
| 2,193 | all all | | Javascript_InitData: '=' Javascript_Expression |
| 642 | all none all 80% | | Javascript_More_Variables: ',' [Javascript_Comment]* Javascript_Variable_Definition [Javascript_InitData] |
| 2,362 | 0% all | Javascript_Element: [Javascript_Label] Javascript_Statement |
| 24 | all all | | Javascript_Label: Javascript_Label_Definition ':' |
| 10,999 | (100% | 0%) | | Javascript_StatementOrComment: (Javascript_Statement | Javascript_Comment) |
| 60,087 | (none | 8% | 11% | 0% | 1% | 0% | 0% | 0% | none | none | 0% | 0% | 0% | 0% | none | none | 0% | 0% | 8% | 0% | 1% | 0% | none | 1% | 4% | none | 0% | 33% | 2% | 0% | 2% | 2% | none | 1% | 3% | none | 0% | 0% | 0% | 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,858 | all all all all all | Javascript_Function: [("static"|"async")] ["export"] ["default"] ["function"] Javascript_FunctionImplementation |
| 1,858 | 14% all 71% none all none all | | Javascript_FunctionImplementation: [Javascript_Function_Definition] '(' [Javascript_FunctionParameters] [Javascript_Comment]* ')' [Javascript_Comment]* Javascript_FunctionBody |
| 1,900 | all 2.96(98%) all | Javascript_FunctionBody: '{' [Javascript_StatementOrComment]* '}' |
| 1,310 | all 1.88(51%) | Javascript_FunctionParameters: Javascript_FunctionParameter [Javascript_MoreParameters]* |
| 2,556 | all all 0% | | Javascript_FunctionParameter: ["..."] Javascript_ParameterName [Javascript_ParameterInitValue] |
| 6 | all all | | | Javascript_ParameterInitValue: '=' Javascript_Expression |
| 2,556 | (0% | 100% | none) | | | Javascript_ParameterName: (Javascript_ParameterBraces | Javascript_Variable_Definition | '$') |
| 6 | all all all | | | | Javascript_ParameterBraces: '{' Javascript_Variable_Definition '}' |
| 1,246 | all none all | | Javascript_MoreParameters: ',' [Javascript_Comment] Javascript_FunctionParameter |
| 7,385 | all 2.51(91%) none all | Javascript_ParenthesizedExpression: '(' [Javascript_Expression]* [','] ')' |
| 207 | 7.28(66%) | Javascript_Program: [Javascript_TopElement]* |
| 998 | (10% | 23% | 67% | none) | | Javascript_TopElement: (Javascript_Comment | Javascript_Function | Javascript_Statement | Javascript_Class) |
| 14,076 | (11% | 15% | 0% | 1% | 0% | 0% | 1% | 3% | 0% | 0% | 10% | none | 7% | 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,474 | all all all | Javascript_Subscript: '[' Javascript_Expression ']' |
| 2,669 | (89% | 11%) | Javascript_Type: (("const"|"let"|"var"|"Array"|"Date"|"Image"|"String") | Javascript_Variable) |
| 27,478 | all 1.38(43%) | Javascript_Variable: Javascript_VariableIdentifier [Javascript_VariableQualifier]* |
| 27,478 | (none | 99% | 1% | none) | | Javascript_VariableIdentifier: (Javascript_CastedVariable | Javascript_Identifier_Reference | ("this") | ("$"|"_")) |
| | | Javascript_CastedVariable: '(' '(' Javascript_Type ')' Javascript_Identifier_Reference ')' | ||
| 16,299 | (85% | 15%) | | Javascript_VariableQualifier: (Javascript_VarField | Javascript_Subscript) |
| 13,825 | all all | | | Javascript_VarField: '.' Javascript_Identifier_Reference |
| 143 | all 17% 71% | Javascript_BreakStatement: "break" [Javascript_Identifier_Reference] [';'] |
| 3 | 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,921 | all 1.00(1%) 79% | Javascript_ExpressionStmt: Javascript_Expression [Javascript_MoreStatements]* [';'] |
| 60 | all all | | Javascript_MoreStatements: ',' Javascript_Statement |
| 58 | all all all all none all | Javascript_ForEachStatement: "for" '(' Javascript_ForCollectionStatement ')' [Javascript_Comment]* Javascript_Element |
| 58 | all 50% 2% all all | | Javascript_ForCollectionStatement: [Javascript_Type] [Javascript_Variable] [Javascript_ForVariables] Javascript_InOrColon Javascript_Expression |
| 1 | all 3.00 all | | | Javascript_ForVariables: '[' Javascript_Variable_Definition* ']' |
| 58 | (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,380 | all all 1.02 none all 1.00(1%) all 1.14(2%) 21% | Javascript_IfStatement: "if" '(' Javascript_Expression* [Javascript_Comment]* ')' [Javascript_Comment]* Javascript_Element [Javascript_Comment]* [Javascript_IfElseClause] |
| 285 | 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* '}' | ||
| 1,029 | all 97% 31% | Javascript_ReturnStatement: "return" [Javascript_Expression] [';'] |
| 1,601 | 1% all 2.14(98%) none all | Javascript_StatementBlock: [Javascript_Label] '{' [Javascript_StatementOrComment]* [';'] '}' |
| 35 | all all all all all 4.00 57% all | Javascript_SwitchStatement: "switch" '(' Javascript_Expression ')' '{' Javascript_CaseClause* [Javascript_DefaultClause] '}' |
| 140 | all all all 2.05(81%) | | Javascript_CaseClause: "case" Javascript_Expression ':' [Javascript_StatementOrComment]* |
| 20 | all all 1.20 | | Javascript_DefaultClause: "default" ':' Javascript_StatementOrComment* |
| 59 | all all 5% 5% 88% | Javascript_ThrowStatement: "throw" Javascript_Expression [','] [Javascript_Expression] [';'] |
| 185 | all all 12.95(79%) all 99% 1% | Javascript_TryStatement: "try" '{' [Javascript_StatementOrComment]* '}' [Javascript_CatchBlock] [Javascript_FinallyBlock] |
| 184 | all all all all all | | Javascript_CatchBlock: "catch" '(' Javascript_Variable_Definition ')' Javascript_Element |
| 1 | all all | | Javascript_FinallyBlock: "finally" Javascript_Element |
| 17 | all all all all all | Javascript_WhileStatement: "while" '(' Javascript_Expression ')' Javascript_Element |
Terminals = 14 (instances=63,061)
Tokens = 129 (instances=279,960)
(*) 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.