Eagle Legacy Modernization, LLC

Scala Grammar

Main program: Scala_Program

Scala syntax:

 Count  Terminals:
  Scala_Comment: // comment to end of line
  Scala_EOLN: End of line
  Scala_Function_Definition: An identifier
  Scala_Identifier: An identifier
  Scala_Identifier_Reference: An identifier
  Scala_Literal: Literal quotes:" escape:\ doubled:no multiline:no
  Scala_Number: Number exponent_chars:Ee suffix_chars:LlFfDd trailing_period:yes ignore_char:none
  Scala_Object_Definition: An identifier
  Scala_Variable_Definition: An identifier
 Count  Statistics(*) Tokens:
    Scala_AdditiveExpression: Scala_Expression ("+"|"-") Scala_Expression
    Scala_AssignmentExpression: Scala_Expression (":="|"*="|"/="|"%="|"+="|"-=") Scala_Expression
    Scala_BracesExpression: '{' Scala_Expression* '}'
    Scala_BuiltIn: ("false"|"true")
    Scala_EqualityExpression: Scala_Expression ("=="|"!=") Scala_Expression
    Scala_FunctionCall: Scala_Variable '(' [Scala_Expression]* ')'
    Scala_LogicalAndExpression: Scala_Expression "&&" Scala_Expression
    Scala_LogicalNotExpression: '~' Scala_Expression
    Scala_LogicalOrExpression: Scala_Expression "||" Scala_Expression
    Scala_MultiplicativeExpression: Scala_Expression ("*"|"/"|"%") Scala_Expression
    Scala_NegativeExpression: ("-") Scala_Expression
    Scala_NotExpression: '!' Scala_Expression
    Scala_ParenthesizedExpression: '(' Scala_Expression ')'
    Scala_PostIncrementExpression: Scala_Variable ("++"|"--")
    Scala_PreIncrementExpression: ("++"|"--") Scala_Variable
    Scala_RangeExpression: Scala_Expression "to" Scala_Expression
    Scala_RelationalExpression: Scala_Expression ("<"|">"|"<="|">=") Scala_Expression
    Scala_VariableExpression: Scala_Variable
    Scala_EqualsMethod: Scala_Expression '.' "equals" '(' Scala_Expression ')'
    Scala_LengthMethod: Scala_Expression '.' "length" '(' ')'
    Scala_ListFunction: "List" '(' Scala_Expression* ')'
    Scala_ReverseMethod: Scala_Expression '.' "reverse"
    Scala_StartsWithMethod: Scala_Expression '.' "startswith" '(' Scala_Expression [','] [Scala_Expression] ')'
    Scala_CommentEoln: Scala_Comment Scala_EOLN
    Scala_Expression: (Scala_Number | Scala_Literal | Scala_FunctionCall | Scala_PreIncrementExpression | Scala_PostIncrementExpression | Scala_NegativeExpression | Scala_LogicalNotExpression | Scala_NotExpression | Scala_BuiltIn | Scala_ListFunction | Scala_VariableExpression | Scala_BracesExpression | Scala_ParenthesizedExpression | Scala_ReverseMethod | Scala_EqualsMethod | Scala_LengthMethod | Scala_StartsWithMethod | Scala_MultiplicativeExpression | Scala_AdditiveExpression | Scala_RelationalExpression | Scala_EqualityExpression | Scala_LogicalAndExpression | Scala_LogicalOrExpression | Scala_AssignmentExpression | Scala_RangeExpression)
    Scala_Program: Scala_Element*
    |   Scala_Element: (Scala_CommentEoln | Scala_Import | Scala_Object | Scala_Package | Scala_Statement)
    Scala_Statement: (Scala_Assignment | Scala_BlockStatement | Scala_BreakStatement | Scala_BreakableStatement | Scala_CommentEoln | Scala_VarStatement | Scala_ValStatement | Scala_ForStatement | Scala_Function | Scala_IfStatement | Scala_PrintLnStatement | Scala_ReturnStatement | Scala_WhileStatement | Scala_ExpressionStatement)
    Scala_Type: (Scala_TypeArray | ("Bool"|"Boolean"|"Int"|"String"))
    |   Scala_TypeArray: ("Array"|"List") '[' Scala_Type ']'
    Scala_Variable: Scala_Identifier_Reference* [Scala_Subscript]
    |   Scala_Subscript: '[' Scala_Expression ']'
    Scala_Assignment: Scala_Variable ("="|"+="|"-="|"*="|"/="|":=") Scala_Expression Scala_EOLN
    Scala_BlockStatement: '{' Scala_EOLN [Scala_Statement]* '}' [Scala_EOLN]
    Scala_BreakStatement: "break" Scala_EOLN
    Scala_BreakableStatement: "breakable" Scala_BlockStatement
    Scala_ExpressionStatement: Scala_Expression [Scala_Comment] Scala_EOLN
    Scala_ForStatement: "for" '(' Scala_Variable "<-" Scala_Expression ')' Scala_Statement
    Scala_Function: ["override"] "def" Scala_Function_Definition [Scala_FunctionParams] [Scala_FunctionReturns] ['='] Scala_Statement
    |   Scala_FunctionParameter: Scala_Variable_Definition ':' Scala_Type
    |   Scala_FunctionParams: '(' [Scala_FunctionParameter]* ')'
    |   Scala_FunctionReturns: ':' Scala_Type
    Scala_IfStatement: "if" '(' Scala_Expression ')' Scala_Statement [Scala_IfElseClause]
    |   Scala_IfElseClause: "else" [Scala_EOLN] Scala_Statement
    Scala_Import: "import" Scala_Variable Scala_EOLN
    Scala_Object: "object" Scala_Object_Definition [Scala_ObjectExtends] Scala_BlockStatement
    |   Scala_ObjectExtends: "extends" Scala_Identifier_Reference
    Scala_Package: "package" Scala_Identifier Scala_EOLN
    Scala_PrintLnStatement: "println" '(' Scala_Expression ')' Scala_EOLN
    Scala_ReturnStatement: "return" Scala_Expression Scala_EOLN
    Scala_ValStatement: "val" Scala_Variable_Definition ':' Scala_Type '=' Scala_Expression Scala_EOLN
    Scala_VarStatement: "var" Scala_Variable_Definition '=' Scala_Expression Scala_EOLN
    Scala_WhileStatement: "while" '(' Scala_Expression ')' Scala_Statement

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