Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Some examples of grammars.
Grammars
arithG :: Grammar ArithN CharT Char Source #
Grammar of arithmetic expressions.
SUM ::= PRODUCT | SUM [+-] PRODUCT PRODUCT ::= FACTOR | PRODUCT [*/] FACTOR FACTOR ::= NUMBER | [(] NUMBER [)] NUMBER ::= [0-9] | [0-9] NUMBER
Example
pparse arithG SUM "1+2*3"
aArithG :: Grammar ArithN CharT Char Source #
Ambiguous grammar of arithmetic expressions.
SUM ::= PRODUCT | SUM [+-] SUM PRODUCT ::= FACTOR | PRODUCT [*/] PRODUCT FACTOR ::= NUMBER | [(] NUMBER [)] NUMBER ::= [0-9] | [0-9] NUMBER
Example
pparse aArithG SUM "1+2-3"
lambdaG :: Grammar LambdaN CharT Char Source #
Grammar of lambda expressions.
LAMBDA ::= VAR | [\] VAR [.] LAMBDA | [(] LAMBDA [)] LAMBDA VAR ::= [a-z]
Example
pparse lambdaG LAMBDA "\\x.x" pparse lambdaG LAMBDA "(\\x.(x)x)\\x.(x)x"
mlG :: Grammar MlN String String Source #
ML-like syntax.
TERM ::= ATOMS | "fun" VAR "->" TERM | "let" VAR "=" TERM "in" TERM | "if" TERM "then" TERM | "if" TERM "then" TERM "else" TERM ATOMS ::= ATOM | ATOMS ATOM ATOM ::= VAR | "(" TERM ")" VAR ::= "a" | "b" | "c" | ...
Example
Featuring the if-then-else ambiguity.
pparse
mlG TERM (words "if a then if b then c else d")
jsonG :: Grammar JsonN String String Source #
JSON grammar.
JSON ::= "null" | "true" | "false" | (number) | (string) | "{" OBJECT "}" | "[" ARRAY "]" OBJECT ::= (string) ":" JSON | (string) ":" JSON "," OBJECT ARRAY ::= JSON | JSON "," ARRAY
Example
pparse
jsonG JSON (words "{ \"key\" : \"answer\" , \"contents\" : 42 }")
Symbols
Non-terminals for arithmetic expressions.
Non-terminals for lambda expressions.
Instances
Bounded LambdaN Source # | |
Enum LambdaN Source # | |
Eq LambdaN Source # | |
Ord LambdaN Source # | |
Show LambdaN Source # | |
Non-terminals for an ML-like language.
Non-terminals for JSON.