language-oberon-0.2: Parser and pretty-printer for the Oberon programming language

Safe HaskellNone
LanguageHaskell2010

Language.Oberon.Grammar

Description

Oberon grammar adapted from http://www.ethoberon.ethz.ch/EBNF.html Extracted from the book Programmieren in Oberon - Das neue Pascal by N. Wirth and M. Reiser and translated by J. Templ.

Synopsis

Documentation

data OberonGrammar f p Source #

All the productions of the Oberon grammar

Constructors

OberonGrammar 

Fields

Instances
Lexical (OberonGrammar f) Source # 
Instance details

Defined in Language.Oberon.Grammar

Associated Types

type LexicalConstraint m (OberonGrammar f) s :: Constraint #

Traversable (OberonGrammar f :: (* -> *) -> *) Source # 
Instance details

Defined in Language.Oberon.Grammar

Methods

traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> OberonGrammar f p -> m (OberonGrammar f q) #

sequence :: Applicative m => OberonGrammar f (Compose m p) -> m (OberonGrammar f p) #

Apply (OberonGrammar f :: (* -> *) -> *) Source # 
Instance details

Defined in Language.Oberon.Grammar

Methods

(<*>) :: OberonGrammar f (p ~> q) -> OberonGrammar f p -> OberonGrammar f q #

liftA2 :: (forall (a :: k). p a -> q a -> r a) -> OberonGrammar f p -> OberonGrammar f q -> OberonGrammar f r #

liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> OberonGrammar f p -> OberonGrammar f q -> OberonGrammar f r -> OberonGrammar f s #

Functor (OberonGrammar f :: (* -> *) -> *) Source # 
Instance details

Defined in Language.Oberon.Grammar

Methods

(<$>) :: (forall (a :: k). p a -> q a) -> OberonGrammar f p -> OberonGrammar f q #

Foldable (OberonGrammar f :: (* -> *) -> *) Source # 
Instance details

Defined in Language.Oberon.Grammar

Methods

foldMap :: Monoid m => (forall (a :: k). p a -> m) -> OberonGrammar f p -> m #

Applicative (OberonGrammar f :: (* -> *) -> *) Source # 
Instance details

Defined in Language.Oberon.Grammar

Methods

pure :: (forall (a :: k). f0 a) -> OberonGrammar f f0 #

Distributive (OberonGrammar f :: (* -> *) -> *) Source # 
Instance details

Defined in Language.Oberon.Grammar

Methods

collect :: Functor f1 => (a -> OberonGrammar f f2) -> f1 a -> OberonGrammar f (Compose f1 f2) #

distribute :: Functor f1 => f1 (OberonGrammar f f2) -> OberonGrammar f (Compose f1 f2) #

cotraverse :: Functor m => (forall (a :: k). m (p a) -> q a) -> m (OberonGrammar f p) -> OberonGrammar f q #

DistributiveTraversable (OberonGrammar f :: (* -> *) -> *) Source # 
Instance details

Defined in Language.Oberon.Grammar

Methods

collectTraversable :: Traversable f1 => (a -> OberonGrammar f f2) -> f1 a -> OberonGrammar f (Compose f1 f2) #

distributeTraversable :: Traversable f1 => f1 (OberonGrammar f f2) -> OberonGrammar f (Compose f1 f2) #

cotraverseTraversable :: Traversable f1 => (forall (x :: k). f1 (f2 x) -> f0 x) -> f1 (OberonGrammar f f2) -> OberonGrammar f f0 #

type LexicalConstraint p (OberonGrammar f) s Source # 
Instance details

Defined in Language.Oberon.Grammar

type LexicalConstraint p (OberonGrammar f) s = (s ~ Text, p ~ Parser)

oberon2Grammar :: Grammar (OberonGrammar Ambiguous) Parser Text Source #

Grammar of an Oberon-2 module

oberonDefinitionGrammar :: Grammar (OberonGrammar Ambiguous) Parser Text Source #

Grammar of an Oberon definition module

oberon2DefinitionGrammar :: Grammar (OberonGrammar Ambiguous) Parser Text Source #

Grammar of an Oberon-2 definition module