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")