Safe Haskell | None |
---|---|
Language | Haskell2010 |
Symantics to handle Prefix
, Postfix
or Infix
operators,
of different Precedence
s and possibly with left and/or right Associativity
.
Synopsis
- class (Gram_Char g, Gram_String g, Gram_Rule g, Gram_Alt g, Gram_Try g, Gram_App g, Gram_AltApp g, Gram_CF g) => Gram_Op g where
- data Error_Fixity = Error_Fixity_Infix_not_combinable Infix Infix
- data OpTree a
- insertUnifix :: (Unifix, a -> a) -> OpTree a -> OpTree a
- insertInfix :: OpTree a -> (Infix, a -> a -> a) -> Either Error_Fixity (OpTree a) -> Either Error_Fixity (OpTree a)
- evalOpTree :: OpTree a -> a
- gram_operators :: (Gram_Op g, Gram_RuleEBNF g) => [CF g ()]
Class Gram_Op
class (Gram_Char g, Gram_String g, Gram_Rule g, Gram_Alt g, Gram_Try g, Gram_App g, Gram_AltApp g, Gram_CF g) => Gram_Op g where Source #
Symantics for operators.
Nothing
:: CF g a | expression |
-> CF g (Unifix, a -> a) | prefix operator |
-> CF g (Infix, a -> a -> a) | infix operator |
-> CF g (Unifix, a -> a) | postfix operator |
-> CF g (Either Error_Fixity a) |
Instances
Gram_Op RuleEBNF Source # | |
Defined in Language.Symantic.Grammar.Operators operators :: CF RuleEBNF a -> CF RuleEBNF (Unifix, a -> a) -> CF RuleEBNF (Infix, a -> a -> a) -> CF RuleEBNF (Unifix, a -> a) -> CF RuleEBNF (Either Error_Fixity a) Source # infixrG :: CF RuleEBNF a -> CF RuleEBNF (a -> a -> a) -> CF RuleEBNF a Source # infixlG :: CF RuleEBNF a -> CF RuleEBNF (a -> a -> a) -> CF RuleEBNF a Source # | |
Gram_Op EBNF Source # | |
Defined in Language.Symantic.Grammar.Operators | |
Gram_Op g => Gram_Op (CF g) Source # | |
Defined in Language.Symantic.Grammar.Operators operators :: CF (CF g) a -> CF (CF g) (Unifix, a -> a) -> CF (CF g) (Infix, a -> a -> a) -> CF (CF g) (Unifix, a -> a) -> CF (CF g) (Either Error_Fixity a) Source # infixrG :: CF (CF g) a -> CF (CF g) (a -> a -> a) -> CF (CF g) a Source # infixlG :: CF (CF g) a -> CF (CF g) (a -> a -> a) -> CF (CF g) a Source # |
Type Error_Fixity
data Error_Fixity Source #
Instances
Eq Error_Fixity Source # | |
Defined in Language.Symantic.Grammar.Operators (==) :: Error_Fixity -> Error_Fixity -> Bool # (/=) :: Error_Fixity -> Error_Fixity -> Bool # | |
Show Error_Fixity Source # | |
Defined in Language.Symantic.Grammar.Operators showsPrec :: Int -> Error_Fixity -> ShowS # show :: Error_Fixity -> String # showList :: [Error_Fixity] -> ShowS # |
Type OpTree
Tree of operators.
Useful to recombine operators according to their Precedence
.
insertInfix :: OpTree a -> (Infix, a -> a -> a) -> Either Error_Fixity (OpTree a) -> Either Error_Fixity (OpTree a) Source #
evalOpTree :: OpTree a -> a Source #
Collapse an OpTree
.
gram_operators :: (Gram_Op g, Gram_RuleEBNF g) => [CF g ()] Source #