Main program: Algol68_Program
Algol68 syntax:
:= +:= >= <= ~+ /=
| Count | Terminals: | |
| Algol68_Comment: # comment # | ||
| Algol68_Format: Literal quotes:$ escape:none doubled:no multiline:no | ||
| Algol68_Identifier_Reference: An identifier | ||
| Algol68_Literal: Literal quotes:" escape:\ doubled:no multiline:no | ||
| Algol68_Number: Number exponent_chars:Ee suffix_chars:LlFfDd trailing_period:yes ignore_char:none | ||
| Algol68_Procedure_Definition: An identifier | ||
| Algol68_Variable_Definition: An identifier | ||
| Count | Statistics(*) | Tokens: |
| Algol68_Expression: (Algol68_Number | Algol68_Literal | Algol68_ArrayInfo | Algol68_PreIncrementExpression | Algol68_PostIncrementExpression | Algol68_NegativeExpression | Algol68_LogicalNotExpression | Algol68_EntierExpression | Algol68_WholeExpression | Algol68_BuiltIn | Algol68_ProcedureCall | Algol68_VariableExpression | Algol68_BracketsExpression | Algol68_ParenthesizedExpression | Algol68_SubscriptExpression | Algol68_Subfield | Algol68_Power_Expression | Algol68_MultiplicativeExpression | Algol68_AdditiveExpression | Algol68_RelationalExpression | Algol68_LogicalAndExpression | Algol68_LogicalOrExpression | Algol68_AssignmentExpression | Algol68_RangeExpression) | ||
| Algol68_Program: Algol68_TopElement* | ||
| | Algol68_Main: "MAIN" ':' '(' Algol68_Statement* ')' | ||
| | Algol68_TopElement: (Algol68_Statement | Algol68_Main) | ||
| Algol68_Statement: (Algol68_Comment | Algol68_Data | Algol68_ForStatement | Algol68_IfStatement | Algol68_PrintStatement | Algol68_PrintfStatement | Algol68_Procedure | Algol68_WhileStatement | Algol68_Assignment | Algol68_ExpressionStatement) | ||
| Algol68_Type: (Algol68_ArrayType | ("BOOL"|"INT"|"DOUBLE"|"STRING"|"VOID")) | ||
| | Algol68_ArrayType: '[' ']' Algol68_Type | ||
| Algol68_Variable: Algol68_Identifier_Reference* [Algol68_Subscript] | ||
| | Algol68_ColonSubscript: ':' Algol68_Expression | ||
| | Algol68_Subscript: '[' Algol68_Expression [Algol68_ColonSubscript] ']' | ||
| Algol68_AdditiveExpression: Algol68_Expression ("+"|"-") Algol68_Expression | ||
| Algol68_ArrayInfo: ("UPB"|"LWB") Algol68_Variable | ||
| Algol68_AssignmentExpression: Algol68_Expression (":="|"*="|"+="|"-=") Algol68_Expression | ||
| Algol68_BracketsExpression: '[' Algol68_Expression* ']' | ||
| Algol68_BuiltIn: ("FALSE"|"TRUE") | ||
| Algol68_EntierExpression: "ENTIER" Algol68_Expression | ||
| Algol68_LogicalAndExpression: Algol68_Expression "and" Algol68_Expression | ||
| Algol68_LogicalNotExpression: '~' Algol68_Expression | ||
| Algol68_LogicalOrExpression: Algol68_Expression ("or"|"xor") Algol68_Expression | ||
| Algol68_MultiplicativeExpression: Algol68_Expression Algol68_MultOper Algol68_Expression | ||
| | Algol68_MultOper: (("*"|"/"|"%") | ("mod"|"over")) | ||
| Algol68_NegativeExpression: ("-") Algol68_Expression | ||
| Algol68_ParenthesizedExpression: '(' Algol68_Expression* ')' | ||
| Algol68_PostIncrementExpression: Algol68_Variable ("++"|"--") | ||
| Algol68_Power_Expression: Algol68_Expression "**" Algol68_Expression | ||
| Algol68_PreIncrementExpression: ("++"|"--") Algol68_Variable | ||
| Algol68_ProcedureCall: Algol68_Variable ['?'] Algol68_FunctionArguments | ||
| | Algol68_FunctionArg: (Algol68_FunctionSetArg | Algol68_Expression) | ||
| | | Algol68_FunctionSetArg: Algol68_Identifier_Reference "=>" Algol68_Expression | ||
| | Algol68_FunctionArguments: '(' Algol68_FunctionArg* ')' | ||
| Algol68_RangeExpression: Algol68_Expression ".." Algol68_Expression | ||
| Algol68_RelationalExpression: Algol68_Expression Algol68_RelOp Algol68_Expression | ||
| | Algol68_RelOp: (("<"|">"|"<="|">="|"="|"~="|"/=") | ("LT"|"LE"|"EQ"|"NE"|"GE"|"GT")) | ||
| Algol68_Subfield: Algol68_Expression '.' Algol68_Expression | ||
| Algol68_SubscriptExpression: Algol68_Expression '[' [Algol68_Expression] [':'] [Algol68_SubscriptionEnd] ']' | ||
| | Algol68_SubscriptionEnd: ("end" | Algol68_Expression) | ||
| Algol68_VariableExpression: Algol68_Variable | ||
| Algol68_WholeExpression: "WHOLE" '(' Algol68_Expression ',' Algol68_Number ')' | ||
| Algol68_Assignment: Algol68_Variable ("="|"+="|":="|"+:=") Algol68_Expression [';'] | ||
| Algol68_Data: Algol68_Type Algol68_Variable_Definition* [Algol68_DataInitialValue] ';' | ||
| | Algol68_DataInitialValue: ("="|":=") Algol68_Expression | ||
| Algol68_ExpressionStatement: Algol68_Expression [';'] | ||
| Algol68_ForStatement: "FOR" Algol68_Variable Algol68_ForClause* "DO" Algol68_Statement* "OD" [';'] | ||
| | Algol68_ForClause: ("FROM"|"BY"|"TO"|"WHILE") Algol68_Expression | ||
| Algol68_IfStatement: "IF" Algol68_Expression "THEN" Algol68_Statement* [Algol68_IfElifClause]* [Algol68_IfElseClause] "FI" [';'] | ||
| | Algol68_IfElifClause: "ELIF" Algol68_Expression "THEN" Algol68_Statement* | ||
| | Algol68_IfElseClause: "ELSE" Algol68_Statement* | ||
| Algol68_PrintStatement: "PRINT" '(' '(' Algol68_PrintWhat* ')' ')' [';'] | ||
| | Algol68_PrintNewLine: "NEW" "LINE" | ||
| | Algol68_PrintWhat: (Algol68_Expression | Algol68_PrintNewLine) | ||
| Algol68_PrintfStatement: "PRINTF" "((" Algol68_Format ',' Algol68_Expression "))" [';'] | ||
| Algol68_Procedure: "PROC" Algol68_Procedure_Definition '=' [Algol68_ProcedureParams] [Algol68_ProcedureReturns] '(' Algol68_Statement* [Algol68_Variable] ')' ';' | ||
| | Algol68_Parameter: Algol68_Type Algol68_Variable_Definition | ||
| | Algol68_ProcedureParams: '(' [Algol68_Parameter]* ')' | ||
| | Algol68_ProcedureReturns: Algol68_Type ':' | ||
| Algol68_WhileStatement: "WHILE" Algol68_Expression "DO" Algol68_Statement* "OD" [';'] | ||
Terminals = 7 (instances=0)
Tokens = 56 (instances=0)
(*) 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.