Eagle Legacy Modernization, LLC

Ruby Grammar

Main program: Ruby_Program

Ruby syntax:

 Count  Terminals:
  Ruby_Comment: # comment to end of line
  Ruby_EOLN: End of line
  Ruby_Function_Definition: An identifier
  Ruby_Identifier_Reference: An identifier
  Ruby_Literal: Literal quotes:"' escape:\ doubled:no multiline:no
  Ruby_Number: Number exponent_chars:Ee suffix_chars:LlFfDd trailing_period:yes ignore_char:none
  Ruby_Variable_Definition: An identifier
 Count  Statistics(*) Tokens:
    Ruby_AdditiveExpression: Ruby_Expression ("+"|"-") Ruby_Expression
    Ruby_AssignmentExpression: Ruby_Expression (":="|"*="|"/="|"%="|"+="|"-=") Ruby_Expression
    Ruby_BitwiseNotExpression: '~' Ruby_Expression
    Ruby_BracketsExpression: '[' Ruby_Expression* ']'
    Ruby_BuiltIn: ("false"|"true")
    Ruby_EqualityExpression: Ruby_Expression ("=="|"!=") Ruby_Expression
    Ruby_FunctionCall: Ruby_Variable '(' Ruby_Expression* ')'
    Ruby_LogicalAndExpression: Ruby_Expression "&&" Ruby_Expression
    Ruby_LogicalNotExpression: '!' Ruby_Expression
    Ruby_LogicalOrExpression: Ruby_Expression "||" Ruby_Expression
    Ruby_MultiplicativeExpression: Ruby_Expression ("*"|"/"|"%") Ruby_Expression
    Ruby_NegativeExpression: ("-") Ruby_Expression
    Ruby_ParenthesizedExpression: '(' Ruby_Expression ')'
    Ruby_PostIncrementExpression: Ruby_Variable ("++"|"--")
    Ruby_PreIncrementExpression: ("++"|"--") Ruby_Variable
    Ruby_RangeExpression: Ruby_Expression ".." Ruby_Expression
    Ruby_RelationalExpression: Ruby_Expression ("<"|">"|"<="|">=") Ruby_Expression
    Ruby_Subfield: Ruby_Expression '.' Ruby_Expression
    Ruby_SubscriptExpression: Ruby_Expression '[' Ruby_Expression ']'
    Ruby_VariableExpression: Ruby_Variable
    Ruby_DownToMethod: Ruby_Expression '.' "downto" Ruby_Expression
    Ruby_LengthMethod: Ruby_Expression '.' "length"
    Ruby_StartWithMethod: Ruby_Expression '.' "start_with" '?' '(' Ruby_Expression ')'
    Ruby_CommentEoln: Ruby_Comment Ruby_EOLN
    Ruby_Expression: (Ruby_Number | Ruby_Literal | Ruby_FunctionCall | Ruby_PreIncrementExpression | Ruby_PostIncrementExpression | Ruby_NegativeExpression | Ruby_BitwiseNotExpression | Ruby_LogicalNotExpression | Ruby_BuiltIn | Ruby_VariableExpression | Ruby_BracketsExpression | Ruby_ParenthesizedExpression | Ruby_SubscriptExpression | Ruby_StartWithMethod | Ruby_LengthMethod | Ruby_DownToMethod | Ruby_Subfield | Ruby_MultiplicativeExpression | Ruby_AdditiveExpression | Ruby_RelationalExpression | Ruby_EqualityExpression | Ruby_LogicalAndExpression | Ruby_LogicalOrExpression | Ruby_AssignmentExpression | Ruby_RangeExpression)
    Ruby_Program: Ruby_Statement*
    Ruby_Statement: (Ruby_Assignment | Ruby_BlockStatement | Ruby_BreakStatement | Ruby_CommentEoln | Ruby_Data | Ruby_ForStatement | Ruby_Function | Ruby_IfStatement | Ruby_PutsStatement | Ruby_ReturnStatement | Ruby_WhileStatement | Ruby_ExpressionStatement)
    Ruby_Variable: ['$'] Ruby_Identifier_Reference*
    Ruby_Assignment: Ruby_Variable ("="|"+="|"-="|"*="|"/="|":=") Ruby_Expression Ruby_EOLN
    Ruby_BlockStatement: '{' Ruby_EOLN Ruby_Statement* '}' [Ruby_EOLN]
    Ruby_BreakStatement: "break" Ruby_EOLN
    Ruby_Data: "var" Ruby_Variable_Definition '=' Ruby_Expression Ruby_EOLN
    Ruby_ExpressionStatement: Ruby_Expression [Ruby_Comment] Ruby_EOLN
    Ruby_ForStatement: "for" Ruby_Variable "in" Ruby_Expression Ruby_EOLN Ruby_Statement* "end" Ruby_EOLN
    Ruby_Function: "def" Ruby_Function_Definition [Ruby_FunctionParams] Ruby_EOLN Ruby_Statement* "end" Ruby_EOLN
    |   Ruby_FunctionParams: '(' [Ruby_Variable]* ')'
    Ruby_IfStatement: "if" Ruby_Expression Ruby_EOLN Ruby_Statement* [Ruby_IfElsif]* [Ruby_IfElseClause] "end" Ruby_EOLN
    |   Ruby_IfElseClause: "else" [Ruby_EOLN] Ruby_Statement*
    |   Ruby_IfElsif: "elsif" Ruby_Expression [Ruby_EOLN] Ruby_Statement*
    Ruby_PutsStatement: "puts" Ruby_Expression Ruby_EOLN
    Ruby_ReturnStatement: "return" Ruby_Expression Ruby_EOLN
    Ruby_WhileStatement: "while" Ruby_Expression ["do"] Ruby_EOLN Ruby_Statement* "end" Ruby_EOLN

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