little-earley-0.2.0.0: Simple implementation of Earley parsing
Safe HaskellSafe-Inferred
LanguageHaskell2010

Little.Earley.Examples

Description

Some examples of grammars.

Synopsis

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

data ArithN Source #

Non-terminals for arithmetic expressions.

Constructors

SUM 
PRODUCT 
FACTOR 
NUMBER 

Instances

Instances details
Bounded ArithN Source # 
Instance details

Defined in Little.Earley.Examples

Enum ArithN Source # 
Instance details

Defined in Little.Earley.Examples

Eq ArithN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

(==) :: ArithN -> ArithN -> Bool #

(/=) :: ArithN -> ArithN -> Bool #

Ord ArithN Source # 
Instance details

Defined in Little.Earley.Examples

Show ArithN Source # 
Instance details

Defined in Little.Earley.Examples

data LambdaN Source #

Non-terminals for lambda expressions.

Constructors

LAMBDA 
VAR 

Instances

Instances details
Bounded LambdaN Source # 
Instance details

Defined in Little.Earley.Examples

Enum LambdaN Source # 
Instance details

Defined in Little.Earley.Examples

Eq LambdaN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

(==) :: LambdaN -> LambdaN -> Bool #

(/=) :: LambdaN -> LambdaN -> Bool #

Ord LambdaN Source # 
Instance details

Defined in Little.Earley.Examples

Show LambdaN Source # 
Instance details

Defined in Little.Earley.Examples

data MlN Source #

Non-terminals for an ML-like language.

Constructors

TERM 
ATOMS 
ATOM 
VAR' 

Instances

Instances details
Bounded MlN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

minBound :: MlN #

maxBound :: MlN #

Enum MlN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

succ :: MlN -> MlN #

pred :: MlN -> MlN #

toEnum :: Int -> MlN #

fromEnum :: MlN -> Int #

enumFrom :: MlN -> [MlN] #

enumFromThen :: MlN -> MlN -> [MlN] #

enumFromTo :: MlN -> MlN -> [MlN] #

enumFromThenTo :: MlN -> MlN -> MlN -> [MlN] #

Eq MlN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

(==) :: MlN -> MlN -> Bool #

(/=) :: MlN -> MlN -> Bool #

Ord MlN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

compare :: MlN -> MlN -> Ordering #

(<) :: MlN -> MlN -> Bool #

(<=) :: MlN -> MlN -> Bool #

(>) :: MlN -> MlN -> Bool #

(>=) :: MlN -> MlN -> Bool #

max :: MlN -> MlN -> MlN #

min :: MlN -> MlN -> MlN #

Show MlN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

showsPrec :: Int -> MlN -> ShowS #

show :: MlN -> String #

showList :: [MlN] -> ShowS #

data JsonN Source #

Non-terminals for JSON.

Constructors

JSON 
OBJECT 
ARRAY 

Instances

Instances details
Bounded JsonN Source # 
Instance details

Defined in Little.Earley.Examples

Enum JsonN Source # 
Instance details

Defined in Little.Earley.Examples

Eq JsonN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

(==) :: JsonN -> JsonN -> Bool #

(/=) :: JsonN -> JsonN -> Bool #

Ord JsonN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

compare :: JsonN -> JsonN -> Ordering #

(<) :: JsonN -> JsonN -> Bool #

(<=) :: JsonN -> JsonN -> Bool #

(>) :: JsonN -> JsonN -> Bool #

(>=) :: JsonN -> JsonN -> Bool #

max :: JsonN -> JsonN -> JsonN #

min :: JsonN -> JsonN -> JsonN #

Show JsonN Source # 
Instance details

Defined in Little.Earley.Examples

Methods

showsPrec :: Int -> JsonN -> ShowS #

show :: JsonN -> String #

showList :: [JsonN] -> ShowS #

data CharT Source #

Basic character classes.

Constructors

Digit 
Alpha 
OneOf [Char] 

Instances

Instances details
Eq CharT Source # 
Instance details

Defined in Little.Earley.Examples

Methods

(==) :: CharT -> CharT -> Bool #

(/=) :: CharT -> CharT -> Bool #

Ord CharT Source # 
Instance details

Defined in Little.Earley.Examples

Methods

compare :: CharT -> CharT -> Ordering #

(<) :: CharT -> CharT -> Bool #

(<=) :: CharT -> CharT -> Bool #

(>) :: CharT -> CharT -> Bool #

(>=) :: CharT -> CharT -> Bool #

max :: CharT -> CharT -> CharT #

min :: CharT -> CharT -> CharT #

Show CharT Source # 
Instance details

Defined in Little.Earley.Examples

Methods

showsPrec :: Int -> CharT -> ShowS #

show :: CharT -> String #

showList :: [CharT] -> ShowS #

matchCharT :: CharT -> Char -> Bool Source #

Membership function for character classes.