Eagle Legacy Modernization, LLC

Eaglish Grammar

Main program: Eaglish_Program

Eaglish syntax:

 Count  Terminals:
  Eaglish_Comment: # comment to end of line
  Eaglish_EndOfLine: End of line
  Eaglish_Function_Definition: An identifier
  Eaglish_Identifier_Reference: An identifier
  Eaglish_Literal: Literal quotes:" escape:\ doubled:no multiline:no
  Eaglish_Number: Number exponent_chars:none suffix_chars:none trailing_period:yes ignore_char:none
  Eaglish_Parameter_Definition: An identifier
  Eaglish_Program_Identifier: An identifier
  Eaglish_Variable_Definition: An identifier
 Count  Statistics(*) Tokens:
    Eaglish_Expression: (Eaglish_Number | Eaglish_Literal | Eaglish_LengthFunction | Eaglish_FunctionCall | Eaglish_NegativeExpression | Eaglish_LogicalNotExpresion | Eaglish_ParenthesizedExpression | Eaglish_BuiltInExpression | Eaglish_VariableExpression | Eaglish_SubscriptExpression | Eaglish_MultiplicativeExpression | Eaglish_AdditiveExpression | Eaglish_RelationalExpression | Eaglish_ConditionStringMatch | Eaglish_LogicalAndExpression | Eaglish_LogicalOrExpression)
    Eaglish_Program: [Eaglish_CommentEoln]* Eaglish_Prog [Eaglish_CommentEoln]*
    |   Eaglish_Prog: "PROGRAM" Eaglish_Program_Identifier Eaglish_EndOfLine Eaglish_Statement* "END_PROGRAM" Eaglish_EndOfLine
    Eaglish_Statement: (Eaglish_Add_Statement | Eaglish_Array_Data | Eaglish_Break_For | Eaglish_Call_Statement | Eaglish_CommentEoln | Eaglish_For_Block | Eaglish_Function | Eaglish_If_Block | Eaglish_Integer_Data | Eaglish_Print_Statement | Eaglish_Return_Statement | Eaglish_Set_Statement | Eaglish_String_Data | Eaglish_Subtract_Statement | Eaglish_While_Block)
    Eaglish_Type: (("BOOLEAN"|"INTEGER"|"STRING"))
    Eaglish_Variable: Eaglish_VariableIdentifier
    |   Eaglish_VariableIdentifier: (Eaglish_Identifier_Reference)
    Eaglish_AdditiveExpression: Eaglish_Expression ("+"|"-") Eaglish_Expression
    Eaglish_BuiltInExpression: ("TRUE"|"FALSE")
    Eaglish_ConditionStringMatch: Eaglish_Expression ("ENDS_WITH"|"STARTS_WITH") Eaglish_Expression [Eaglish_Condition_MatchAt]
    |   Eaglish_Condition_MatchAt: "AT" Eaglish_Expression
    Eaglish_FunctionCall: Eaglish_Identifier_Reference '(' [Eaglish_Expression]* ')'
    Eaglish_LogicalAndExpression: Eaglish_Expression "AND" Eaglish_Expression
    Eaglish_LogicalNotExpresion: "Not" Eaglish_Expression
    Eaglish_LogicalOrExpression: Eaglish_Expression ("OR"|"XOR") Eaglish_Expression
    Eaglish_MultiplicativeExpression: Eaglish_Expression Eaglish_MultiplicationOperator Eaglish_Expression
    |   Eaglish_MultiplicationOperator: (("*") | ("DIVIDE_TRUNCATE"|"MODULUS"|"REMAINDER"))
    Eaglish_NegativeExpression: ("-"|"+") Eaglish_Expression
    Eaglish_ParenthesizedExpression: '(' Eaglish_Expression ')'
    Eaglish_RelationalExpression: Eaglish_Expression Eaglish_RelationalOperator Eaglish_Expression
    |   Eaglish_RelationalOperator: (("="|"<"|">"|"<="|">=") | ("EQUALS"|"NOT_EQUALS"))
    Eaglish_SubscriptExpression: Eaglish_Expression '[' Eaglish_Expression ']'
    Eaglish_VariableExpression: Eaglish_Variable
    Eaglish_LengthFunction: "LENGTH" '(' Eaglish_Expression ')'
    Eaglish_Add_Statement: "ADD" Eaglish_Expression "TO" Eaglish_Variable Eaglish_EndOfLine
    Eaglish_Array_Data: "ARRAY" Eaglish_Variable_Definition [Eaglish_Array_InitialValues] Eaglish_EndOfLine
    |   Eaglish_Array_InitialValues: '=' Eaglish_Expression*
    Eaglish_Break_For: "BREAK_FOR" Eaglish_EndOfLine
    Eaglish_Call_Statement: "CALL" Eaglish_Identifier_Reference [Eaglish_CallParameters] Eaglish_EndOfLine
    |   Eaglish_CallParameters: '(' Eaglish_Expression* ')'
    Eaglish_For_Block: "FOR" Eaglish_Variable_Definition '=' Eaglish_Expression ("TO"|"DOWN_TO") Eaglish_Expression Eaglish_EndOfLine [Eaglish_Statement]* "END_FOR" Eaglish_EndOfLine
    Eaglish_Function: "FUNCTION" Eaglish_Function_Definition Eaglish_EndOfLine [Eaglish_Parameter_Statement]* [Eaglish_Returns_Statement] [Eaglish_Statement]* "END_FUNCTION" Eaglish_EndOfLine
    Eaglish_If_Block: "IF" Eaglish_Expression Eaglish_EndOfLine [Eaglish_Statement]* [Eaglish_If_ElseIf_Block]* [Eaglish_If_Else_Block] "END_IF" Eaglish_EndOfLine
    |   Eaglish_If_ElseIf_Block: "ELSE_IF" Eaglish_Expression Eaglish_EndOfLine [Eaglish_Statement]*
    |   Eaglish_If_Else_Block: "ELSE" Eaglish_EndOfLine [Eaglish_Statement]*
    Eaglish_Integer_Data: "INTEGER" Eaglish_Variable_Definition [Eaglish_Integer_InitialValue] Eaglish_EndOfLine
    |   Eaglish_Integer_InitialValue: '=' Eaglish_Expression
    Eaglish_Parameter_Statement: "PARAMETER" Eaglish_Parameter_Definition "IS" Eaglish_Type [Eaglish_ParemeterDefaultValue] Eaglish_EndOfLine
    |   Eaglish_ParemeterDefaultValue: "DEFAULT" Eaglish_Expression
    Eaglish_Print_Statement: "PRINT" Eaglish_Expression Eaglish_EndOfLine
    Eaglish_Return_Statement: "RETURN" Eaglish_Expression Eaglish_EndOfLine
    Eaglish_Returns_Statement: "RETURNS" Eaglish_Type Eaglish_EndOfLine
    Eaglish_Set_Statement: "SET" Eaglish_Variable_Definition '=' Eaglish_Expression Eaglish_EndOfLine
    Eaglish_String_Data: "STRING" Eaglish_Variable_Definition [Eaglish_String_InitialValue] Eaglish_EndOfLine
    |   Eaglish_String_InitialValue: '=' Eaglish_Expression
    Eaglish_Subtract_Statement: "SUBTRACT" Eaglish_Expression "FROM" Eaglish_Variable Eaglish_EndOfLine
    Eaglish_While_Block: "WHILE" Eaglish_Expression Eaglish_EndOfLine [Eaglish_Statement]* "END_WHILE" Eaglish_EndOfLine
    Eaglish_CommentEoln: Eaglish_Comment [Eaglish_EndOfLine]

Terminals = 9 (instances=0)
Tokens = 48 (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.