Eagle Legacy Modernization, LLC

Rexx Grammar

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.