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.