ContentsIndex
Syntax
Contents
Utility
Pretty printers.
Synopsis
newtype Name = Name String
data Term
= App String [Term]
| Var Name
| Lab Label
freeVars :: Term -> [Name]
data Proc
= Nil
| In Name Proc
| Out Term Proc
| New Name Proc
| Par Proc Proc
| Repl Proc
| Let Name Term Proc
| Match Name Name Proc
| Check Proc
newtype Position = Pos String
newtype Label = Label String
data Production
= P Label Term
| Inters Label Label Label
| Remark String
newLabel :: Position -> String -> Label
newLabelForName :: Position -> Name -> String -> Label
constOfName :: Name -> String -> Term
top :: Position
top' :: Position
next :: Position -> Position
left :: Position -> Position
right :: Position -> Position
pprBinding :: Name -> Label -> String
pprTerm :: Term -> String
pprProductions :: [Production] -> String -> String
pprProc :: Proc -> String
Documentation
newtype Name
Names in the process algebra.
Constructors
Name String
Instances
Show Name
Eq Name
Ord Name
data Term
Term algebra.
Constructors
App String [Term]Application
Var NameVariables (only in processes)
Lab LabelLabels (only in productions)
Instances
Show Term
freeVars :: Term -> [Name]
data Proc
Processes of the algebra.
Constructors
Nil
()
In Name Proc
in X . Q
Out Term Proc
out T . Q
New Name Proc
new X . Q
Par Proc Proc
(Q | R)
Repl Proc
! Q
Let Name Term Proc
let X = T . Q
Match Name Name Proc
[ X = Y ] . Q
Check Proc
chk . Q
Instances
Show Proc
newtype Position
Address in the process.
Constructors
Pos String
Instances
Show Position
Eq Position
newtype Label
Labels for the generated grammar.
Constructors
Label String
Instances
Show Label
Eq Label
Ord Label
data Production
Productions of the generated grammar.
Constructors
P Label Termproduction
Inters Label Label Labelintersection rule
Remark Stringcomment for the output
Utility
newLabel :: Position -> String -> Label
Generate a fresh Label at a given place.
newLabelForName :: Position -> Name -> String -> Label
Label for a variable at a given place.
constOfName :: Name -> String -> Term
Constant Term for a new-generated variable. We assume every new to be distinct. (We could also use Position for this, but it would be harder to use the generated name in rewriting rules.)
top :: Position
The top address for the whole proces.
top' :: Position
Alternative top (used only in post-apocalyptic analysis).
next :: Position -> Position
Generate a new Position for the continuation.
left :: Position -> Position
Generate a new Position for the left branch of a Par.
right :: Position -> Position
Generate a new Position for the right branch of a Par.
Pretty printers.
pprBinding :: Name -> Label -> String
Used for Remarks.
pprTerm :: Term -> String
Pretty print a Term.
pprProductions :: [Production] -> String -> String
Pretty print Productions.
pprProc :: Proc -> String
Pretty print a Process.
Produced by Haddock version 0.6