Eagle Legacy Modernization, LLC

Haskell Grammar

Main program: Haskell_Program

Haskell syntax:

 Count  Terminals:
  Haskell_Comment: -- comment to end of line
  Haskell_Data_Definition: An identifier
  Haskell_EndOfLine: End of line
  Haskell_Function_Definition: An identifier
  Haskell_Identifier_Reference: An identifier
  Haskell_Literal: Literal quotes:" escape:\ doubled:no multiline:no
  Haskell_Number: Number exponent_chars:Ee suffix_chars:none trailing_period:yes ignore_char:none
  Haskell_Parameter_Definition: An identifier
  Haskell_StartOfLine: Start of line
 Count  Statistics(*) Tokens:
    Haskell_AdditiveExpression: Haskell_Expression ("+"|"-") Haskell_Expression
    Haskell_BracketsExpression: '[' Haskell_Expression* ']'
    Haskell_BuiltInExpression: ("False"|"True")
    Haskell_ConcatExpression: Haskell_Expression "++" Haskell_Expression
    Haskell_LogicalAndExpression: Haskell_Expression "&&" Haskell_Expression
    Haskell_LogicalNotExpression: "not" Haskell_Expression
    Haskell_LogicalOrExpression: Haskell_Expression "||" Haskell_Expression
    Haskell_MultiplicativeExpression: Haskell_Expression Haskell_MultOper Haskell_Expression
    |   Haskell_MultOper: (("*"|"/") | ("`div`"|"`quot`"|"`mod`"|"`rem`"))
    Haskell_NegativeExpression: ("-") Haskell_Expression
    Haskell_ParenthesizedExpression: '(' [Haskell_Expression]* ')'
    Haskell_RangeExpression: '[' Haskell_Expression ".." Haskell_Expression ']'
    Haskell_RelationalExpression: Haskell_Expression ("<"|">"|"<="|">="|"=="|"/=") Haskell_Expression
    Haskell_SubscriptExpression: Haskell_Expression "!!" Haskell_Expression
    Haskell_TupleExpression: '(' Haskell_Expression ',' Haskell_Expression* ')'
    Haskell_VariableExpression: Haskell_Variable
    Haskell_DropFunction: "drop" Haskell_Expression Haskell_Expression
    Haskell_IfFunction: "if" Haskell_Expression [Haskell_EndOfLine] "then" Haskell_Expression [Haskell_EndOfLine] "else" Haskell_Expression
    Haskell_IsPrefixOfFunction: "isPrefixOf" Haskell_Expression Haskell_Expression
    Haskell_LengthFunction: "length" Haskell_Expression
    Haskell_MapFunction: "map" Haskell_Identifier_Reference Haskell_RangeExpression
    Haskell_ModFunction: ("mod"|"div") Haskell_ModArgument Haskell_ModArgument
    |   Haskell_ModArgument: (Haskell_Number | Haskell_Variable | Haskell_ParenthesizedExpression)
    Haskell_SecondFunction: "snd" Haskell_Expression
    Haskell_ShowFunction: "show" Haskell_Expression
    Haskell_SumFunction: "sum" Haskell_BracketsExpression
    Haskell_UnlinesFunction: "unlines" Haskell_Expression
    Haskell_ComplexStatement: Haskell_StartOfLine Haskell_StatementOrComment [';'] [','] [Haskell_Comment] [Haskell_EndOfLine]*
    |   Haskell_Statement: (Haskell_Function | Haskell_DataStatement | Haskell_DoStatement | Haskell_FunctionCall | Haskell_IfStatement | Haskell_ImportStatement | Haskell_LetStatement | Haskell_MainFunction | Haskell_MapMStatement | Haskell_PutStrStatement | Haskell_ReturnStatement | Haskell_ExpressionStatement)
    |   Haskell_StatementOrComment: (Haskell_Comment | Haskell_SameLineStatement)
    Haskell_Expression: (Haskell_Number | Haskell_Literal | Haskell_Identifier_Reference | Haskell_NegativeExpression | Haskell_LogicalNotExpression | Haskell_BuiltInExpression | Haskell_LengthFunction | Haskell_ModFunction | Haskell_SumFunction | Haskell_ShowFunction | Haskell_SecondFunction | Haskell_DropFunction | Haskell_MapFunction | Haskell_UnlinesFunction | Haskell_IsPrefixOfFunction | Haskell_VariableExpression | Haskell_ParenthesizedExpression | Haskell_TupleExpression | Haskell_RangeExpression | Haskell_BracketsExpression | Haskell_IfFunction | Haskell_SubscriptExpression | Haskell_MultiplicativeExpression | Haskell_AdditiveExpression | Haskell_ConcatExpression | Haskell_RelationalExpression | Haskell_LogicalAndExpression | Haskell_LogicalOrExpression)
    Haskell_Program: Haskell_ComplexStatement*
    Haskell_Type: (Haskell_TypeArray | Haskell_TypeIO | Haskell_TypeTuple | ("Bool"|"Int"|"Integer"|"String"))
    |   Haskell_TypeArray: '[' Haskell_Type ']'
    |   Haskell_TypeIO: "IO" Haskell_Type
    |   Haskell_TypeTuple: '(' [Haskell_Type]* ')'
    Haskell_Variable: Haskell_Identifier_Reference [Haskell_Subscript]
    |   Haskell_Subscript: '[' Haskell_Expression ']'
    Haskell_DataStatement: Haskell_DataType Haskell_Data_Definition '=' Haskell_Expression
    |   Haskell_DataType: Haskell_Identifier_Reference "::" Haskell_Type Haskell_EndOfLine
    Haskell_DoStatement: "do" Haskell_StatementBlock
    Haskell_ExpressionStatement: Haskell_Expression [Haskell_ExpressionType] [Haskell_Comment]
    |   Haskell_ExpressionType: ':' Haskell_Type
    Haskell_Function: Haskell_FunctionPrototype Haskell_FunctionDefinition
    |   Haskell_FunctionAssignment: '=' Haskell_ComplexStatement
    |   Haskell_FunctionBody: (Haskell_FunctionGuard | Haskell_FunctionAssignment)
    |   Haskell_FunctionDefinition: Haskell_Function_Definition [Haskell_Parameter_Definition]* Haskell_FunctionBody
    |   Haskell_FunctionGuard: Haskell_EndOfLine Haskell_GuardStatement
    |   Haskell_FunctionPrototype: Haskell_Identifier_Reference "::" Haskell_Type Haskell_ArrowType* Haskell_EndOfLine
    |   |   Haskell_ArrowType: "->" Haskell_Type
    Haskell_FunctionCall: Haskell_Variable "<-" Haskell_Identifier_Reference [Haskell_Expression]*
    Haskell_GuardStatement: Haskell_GuardLine* '|' "otherwise" '=' Haskell_Expression [Haskell_GuardWhere]
    |   Haskell_GuardLine: '|' Haskell_Expression '=' Haskell_Expression Haskell_EndOfLine
    |   Haskell_GuardWhere: Haskell_EndOfLine "where" [Haskell_EndOfLine] Haskell_WhereAssignment*
    |   Haskell_WhereAssignment: Haskell_Variable '=' Haskell_Expression Haskell_EndOfLine
    Haskell_IfStatement: "if" Haskell_Expression [Haskell_EndOfLine] Haskell_IfThenBlock [Haskell_EndOfLine] Haskell_IfElseBlock
    |   Haskell_IfElseBlock: "else" Haskell_StatementBlock
    |   Haskell_IfThenBlock: "then" Haskell_StatementBlock
    Haskell_ImportStatement: "import" Haskell_Variable* [Haskell_ImportWhat]
    |   Haskell_ImportWhat: '(' ("isPrefixOf") ')'
    Haskell_LetStatement: "let" Haskell_LetVariable '=' Haskell_Expression
    |   Haskell_LetMultiple: '(' Haskell_Variable* ')'
    |   Haskell_LetVariable: (Haskell_Variable | Haskell_LetMultiple)
    Haskell_MainFunction: [Haskell_MainPrototype] "main" '=' Haskell_ComplexStatement
    |   Haskell_MainPrototype: "main" "::" "IO" Haskell_Type Haskell_EndOfLine
    Haskell_MapMStatement: "mapM_" '(' '\' Haskell_Variable "->" Haskell_Identifier_Reference Haskell_Expression* ')' Haskell_RangeExpression
    Haskell_PutStrStatement: ("putStr"|"putStrLn") ['$'] Haskell_Expression
    Haskell_ReturnStatement: "return" [Haskell_Expression]
    Haskell_StatementBlock: (Haskell_MultilineStatement | Haskell_SameLineStatement)
    |   Haskell_MultilineStatement: [Haskell_Comment] Haskell_EndOfLine Haskell_ComplexStatement*
    |   Haskell_SameLineStatement: Haskell_Statement* [Haskell_Comment]

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