Main program: Rexx_Program
Rexx syntax:
\= <= >= // ==
| Count | Terminals: | |
| Rexx_Comment: /* comment */ or // comment to end of line | ||
| Rexx_EndOfLine: End of line | ||
| Rexx_Function_Definition: An identifier | ||
| Rexx_Identifier_Reference: An identifier | ||
| Rexx_Literal: Literal quotes:" escape:none doubled:yes multiline:no | ||
| Rexx_Number: Number exponent_chars:Ee suffix_chars:none trailing_period:yes ignore_char:none | ||
| Rexx_Variable_Definition: An identifier | ||
| Count | Statistics(*) | Tokens: |
| Rexx_AdditiveExpression: Rexx_Expression ("+"|"-") Rexx_Expression | ||
| Rexx_BuiltIns: ("false"|"true") | ||
| Rexx_CommentExpression: Rexx_Comment Rexx_Expression | ||
| Rexx_ConcatExpression: Rexx_Expression "||" Rexx_Expression | ||
| Rexx_FunctionCall: Rexx_Identifier_Reference Rexx_FnCallArguments | ||
| | Rexx_FnCallArguments: '(' [Rexx_Expression]* ')' | ||
| Rexx_LogicalAndExpression: Rexx_Expression '&' Rexx_Expression | ||
| Rexx_LogicalNotExpression: '\' Rexx_Expression | ||
| Rexx_LogicalOrExpression: Rexx_Expression '|' Rexx_Expression | ||
| Rexx_LogicalXorExpression: Rexx_Expression "&&" Rexx_Expression | ||
| Rexx_MultiplicativeExpression: Rexx_Expression Rexx_MultiplyOperation Rexx_Expression | ||
| | Rexx_MultiplyOperation: ("mod" | ("*"|"/"|"%"|"//")) | ||
| Rexx_NegativeExpression: ("-"|"+") Rexx_Expression | ||
| Rexx_ParenthesizedExpression: '(' Rexx_Expression ')' | ||
| Rexx_RelationalExpression: Rexx_Expression ("="|"=="|"<="|">="|"\="|"<"|">") Rexx_Expression | ||
| Rexx_SubscriptExpression: Rexx_Expression '.' Rexx_Expression | ||
| Rexx_VariableExpression: Rexx_Variable | ||
| Rexx_LengthFunction: "LENGTH" '(' Rexx_Expression ')' | ||
| Rexx_SubstrFunction: "SUBSTR" '(' Rexx_Expression ',' Rexx_Expression ',' Rexx_Expression ')' | ||
| Rexx_Element: Rexx_Statement [Rexx_Comment] Rexx_EndOfLine | ||
| | Rexx_Statement: (Rexx_Comment | Rexx_AssignmentStatement | Rexx_CallStatement | Rexx_DoStatement | Rexx_ExitStatement | Rexx_IfStatement | Rexx_LeaveStatement | Rexx_ReturnStatement | Rexx_SayStatement) | ||
| Rexx_Expression: (Rexx_Number | Rexx_Literal | Rexx_SubstrFunction | Rexx_LengthFunction | Rexx_FunctionCall | Rexx_NegativeExpression | Rexx_LogicalNotExpression | Rexx_BuiltIns | Rexx_VariableExpression | Rexx_ParenthesizedExpression | Rexx_CommentExpression | Rexx_SubscriptExpression | Rexx_MultiplicativeExpression | Rexx_AdditiveExpression | Rexx_ConcatExpression | Rexx_RelationalExpression | Rexx_LogicalXorExpression | Rexx_LogicalAndExpression | Rexx_LogicalOrExpression) | ||
| Rexx_Program: Rexx_TopElement* | ||
| | Rexx_TopElement: (Rexx_Element | Rexx_Function) | ||
| Rexx_Subscript: '.' Rexx_Subscr | ||
| | Rexx_Subscr: (Rexx_Number | Rexx_Variable) | ||
| Rexx_Variable: Rexx_Identifier_Reference [Rexx_Subscript] | ||
| Rexx_AssignmentStatement: Rexx_Variable '=' Rexx_Expression | ||
| Rexx_CallStatement: "CALL" Rexx_Identifier_Reference [Rexx_Expression]* | ||
| Rexx_DoStatement: "DO" [Rexx_DoLoop] [Rexx_DoWhile] Rexx_EndOfLine Rexx_Element* "END" | ||
| | Rexx_DoLoop: Rexx_Identifier_Reference '=' Rexx_Expression "TO" Rexx_Expression [Rexx_DoBy] | ||
| | | Rexx_DoBy: "BY" Rexx_Expression | ||
| | Rexx_DoWhile: "WHILE" Rexx_Expression | ||
| Rexx_ExitStatement: "EXIT" | ||
| Rexx_Function: Rexx_Function_Definition ':' Rexx_EndOfLine [Rexx_Parameters] Rexx_Element* | ||
| | Rexx_Parameters: "PARSE" "ARG" Rexx_Variable_Definition* Rexx_EndOfLine | ||
| Rexx_IfStatement: "IF" Rexx_Expression "THEN" [Rexx_EndOfLine] Rexx_Statement [Rexx_IfElseClause] | ||
| | Rexx_IfElseClause: [Rexx_Comment]* Rexx_EndOfLine "ELSE" Rexx_EndOfLine Rexx_Statement | ||
| Rexx_LeaveStatement: "LEAVE" | ||
| Rexx_ReturnStatement: "RETURN" [Rexx_Expression] | ||
| Rexx_SayStatement: "SAY" Rexx_Expression | ||
Terminals = 7 (instances=0)
Tokens = 41 (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.