language-Modula2-0.1: Parser, pretty-printer, and more for the Modula-2 programming language
Safe HaskellNone
LanguageHaskell2010

Language.Modula2.ISO.Grammar

Description

Modula-2 grammar adapted from the ISO specification of the language.

Synopsis

Documentation

data ISOMixin l f p Source #

The names and types of all the new grammar productions in the ISO specification

Constructors

ISOMixin 

Fields

Instances

Instances details
Functor (ISOMixin l f :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.ISO.Grammar

Methods

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

Foldable (ISOMixin l f :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.ISO.Grammar

Methods

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

Traversable (ISOMixin l f :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.ISO.Grammar

Methods

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

sequence :: forall m (p :: k -> Type). Applicative m => ISOMixin l f (Compose m p) -> m (ISOMixin l f p) #

Apply (ISOMixin l f :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.ISO.Grammar

Methods

(<*>) :: forall (p :: k -> Type) (q :: k -> Type). ISOMixin l f (p ~> q) -> ISOMixin l f p -> ISOMixin l f q #

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

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

Applicative (ISOMixin l f :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.ISO.Grammar

Methods

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

Distributive (ISOMixin l f :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.ISO.Grammar

Methods

collect :: forall f1 a (f2 :: k -> Type). Functor f1 => (a -> ISOMixin l f f2) -> f1 a -> ISOMixin l f (Compose f1 f2) #

distribute :: forall f1 (f2 :: k -> Type). Functor f1 => f1 (ISOMixin l f f2) -> ISOMixin l f (Compose f1 f2) #

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

DistributiveTraversable (ISOMixin l f :: (Type -> Type) -> Type) Source # 
Instance details

Defined in Language.Modula2.ISO.Grammar

Methods

collectTraversable :: forall f1 a (f2 :: k -> Type). Traversable f1 => (a -> ISOMixin l f f2) -> f1 a -> ISOMixin l f (Compose f1 f2) #

distributeTraversable :: forall f1 (f2 :: k -> Type). Traversable f1 => f1 (ISOMixin l f f2) -> ISOMixin l f (Compose f1 f2) #

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

LexicalParsing (Parser (ISOGrammar l) Text) Source # 
Instance details

Defined in Language.Modula2.ISO.Grammar

TokenParsing (Parser (ISOGrammar l) Text) Source # 
Instance details

Defined in Language.Modula2.ISO.Grammar

isoMixin :: (Modula2 l, LexicalParsing (Parser g Text)) => Modula2Grammar l NodeWrap (Parser g Text) -> ISOMixin l NodeWrap (Parser g Text) -> ISOMixin l NodeWrap (Parser g Text) Source #

The new grammar productions in the ISO specification

isoGrammar :: forall l g. (Modula2 l, LexicalParsing (Parser g Text)) => GrammarBuilder (ISOGrammar l) g Parser Text Source #

All the productions of the ISO Modula-2 grammar