packages feed

uuagc-0.9.39.0: src-ag/ExecutionPlan.ag

imports
{
-- VisitSyntax.ag imports
import Patterns    (Pattern(..),Patterns)
import Expression  (Expression(..))
import CommonTypes

import qualified Data.Set as Set
}

DATA ExecutionPlan | ExecutionPlan  nonts     : ENonterminals
     		     		    typeSyns  : {TypeSyns}
				    wrappers  : {Set.Set NontermIdent}
				    derivings : {Derivings}

TYPE ENonterminals = [ENonterminal]

TYPE EProductions  = [EProduction]

TYPE ERules        = [ERule]

TYPE EChildren     = [EChild]

TYPE VisitSteps    = [VisitStep]

TYPE Visits        = [Visit]

DATA ENonterminal | ENonterminal nt       : {NontermIdent}
                                 params   : {[Identifier]}
				 initial  : {StateIdentifier}
				 initialv : {Maybe VisitIdentifier}
                                 prods    : EProductions

DATA EProduction  | EProduction  con      : {ConstructorIdent}
     		   		 rules    : ERules
				 children : EChildren
				 visits   : Visits

DATA EChild       | EChild       name    : {Identifier}
                                 tp      : {Type}
             			 virtual : {Maybe (Maybe Type)}   -- first maybe: is child virtual, second maybe: did child already exist

DATA ERule        | ERule       name     : {Identifier}
                                pattern  : Pattern 
                                rhs      : Expression
                                owrt     : {Bool}
                                origin   : String  -- just for documentation (and maybe errors)
                                explicit : Bool  -- True if this rule defined in the source code

DATA Visit        | Visit       ident    : {VisitIdentifier}
     		    		from     : {StateIdentifier}
				to       : {StateIdentifier}
				inh      : {Set.Set Identifier}
				syn      : {Set.Set Identifier}
     		    		steps    : VisitSteps

DATA VisitStep    | Sem         name     : {Identifier}
		  | ChildVisit  child    : {Identifier}
		    		nonterm  : {NontermIdent}
				visit    : {VisitIdentifier}
		  | Sim         steps    : VisitSteps
		  | ChildIntro  child    : {Identifier}