packages feed

BNFC-2.8.4: src/AbsBNF.hs

-- Haskell data types for the abstract syntax.
-- Generated by the BNF converter.

module AbsBNF where

import Prelude (Char, Double, Int, Integer, String)
import qualified Prelude as C (Eq, Ord, Show, Read)

newtype Identifier = Identifier ((Int, Int), String)
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data LGrammar = LGr [LDef]
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data LDef
    = DefAll Def | DefSome [Identifier] Def | LDefView [Identifier]
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data Grammar = Grammar [Def]
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data Def
    = Rule Label Cat [Item]
    | Comment String
    | Comments String String
    | Internal Label Cat [Item]
    | Token Identifier Reg
    | PosToken Identifier Reg
    | Entryp [Identifier]
    | Separator MinimumSize Cat String
    | Terminator MinimumSize Cat String
    | Delimiters Cat String String Separation MinimumSize
    | Coercions Identifier Integer
    | Rules Identifier [RHS]
    | Function Identifier [Arg] Exp
    | Layout [String]
    | LayoutStop [String]
    | LayoutTop
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data Item = Terminal String | NTerminal Cat
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data Cat = ListCat Cat | IdCat Identifier
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data Label
    = LabNoP LabelId
    | LabP LabelId [ProfItem]
    | LabPF LabelId LabelId [ProfItem]
    | LabF LabelId LabelId
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data LabelId = Id Identifier | Wild | ListE | ListCons | ListOne
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data ProfItem = ProfIt [IntList] [Integer]
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data IntList = Ints [Integer]
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data Arg = Arg Identifier
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data Separation = SepNone | SepTerm String | SepSepar String
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data Exp
    = Cons Exp Exp
    | App Identifier [Exp]
    | Var Identifier
    | LitInt Integer
    | LitChar Char
    | LitString String
    | LitDouble Double
    | List [Exp]
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data RHS = RHS [Item]
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data MinimumSize = MNonempty | MEmpty
  deriving (C.Eq, C.Ord, C.Show, C.Read)

data Reg
    = RAlt Reg Reg
    | RMinus Reg Reg
    | RSeq Reg Reg
    | RStar Reg
    | RPlus Reg
    | ROpt Reg
    | REps
    | RChar Char
    | RAlts String
    | RSeqs String
    | RDigit
    | RLetter
    | RUpper
    | RLower
    | RAny
  deriving (C.Eq, C.Ord, C.Show, C.Read)