packages feed

hydra-0.1.0: src/gen-main/haskell/Hydra/Grammar.hs

-- | A common API for BNF-based grammars

module Hydra.Grammar where

import qualified Hydra.Core as Core
import Data.List
import Data.Map
import Data.Set

newtype Constant = 
  Constant {
    unConstant :: String}
  deriving (Eq, Ord, Read, Show)

_Constant = (Core.Name "hydra/grammar.Constant")

newtype Grammar = 
  Grammar {
    unGrammar :: [Production]}
  deriving (Eq, Ord, Read, Show)

_Grammar = (Core.Name "hydra/grammar.Grammar")

newtype Label = 
  Label {
    unLabel :: String}
  deriving (Eq, Ord, Read, Show)

_Label = (Core.Name "hydra/grammar.Label")

data LabeledPattern = 
  LabeledPattern {
    labeledPatternLabel :: Label,
    labeledPatternPattern :: Pattern}
  deriving (Eq, Ord, Read, Show)

_LabeledPattern = (Core.Name "hydra/grammar.LabeledPattern")

_LabeledPattern_label = (Core.FieldName "label")

_LabeledPattern_pattern = (Core.FieldName "pattern")

data Pattern = 
  PatternNil  |
  PatternIgnored Pattern |
  PatternLabeled LabeledPattern |
  PatternConstant Constant |
  PatternRegex Regex |
  PatternNonterminal Symbol |
  PatternSequence [Pattern] |
  PatternAlternatives [Pattern] |
  PatternOption Pattern |
  PatternStar Pattern |
  PatternPlus Pattern
  deriving (Eq, Ord, Read, Show)

_Pattern = (Core.Name "hydra/grammar.Pattern")

_Pattern_nil = (Core.FieldName "nil")

_Pattern_ignored = (Core.FieldName "ignored")

_Pattern_labeled = (Core.FieldName "labeled")

_Pattern_constant = (Core.FieldName "constant")

_Pattern_regex = (Core.FieldName "regex")

_Pattern_nonterminal = (Core.FieldName "nonterminal")

_Pattern_sequence = (Core.FieldName "sequence")

_Pattern_alternatives = (Core.FieldName "alternatives")

_Pattern_option = (Core.FieldName "option")

_Pattern_star = (Core.FieldName "star")

_Pattern_plus = (Core.FieldName "plus")

data Production = 
  Production {
    productionSymbol :: Symbol,
    productionPattern :: Pattern}
  deriving (Eq, Ord, Read, Show)

_Production = (Core.Name "hydra/grammar.Production")

_Production_symbol = (Core.FieldName "symbol")

_Production_pattern = (Core.FieldName "pattern")

newtype Regex = 
  Regex {
    unRegex :: String}
  deriving (Eq, Ord, Read, Show)

_Regex = (Core.Name "hydra/grammar.Regex")

newtype Symbol = 
  Symbol {
    unSymbol :: String}
  deriving (Eq, Ord, Read, Show)

_Symbol = (Core.Name "hydra/grammar.Symbol")