1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
imports
{
import CommonTypes
import UU.Pretty
import AbstractSyntax
import VisagePatterns
import Expression
}
DATA VisageGrammar | VGrammar nonts : VisageNonterminals
TYPE VisageNonterminals = [VisageNonterminal]
TYPE VisageProductions = [VisageProduction]
TYPE VisageChildren = [VisageChild]
TYPE VisageRules = [VisageRule]
DATA VisageNonterminal | VNonterminal nt : {NontermIdent}
inh : {Attributes}
syn : {Attributes}
alts : VisageProductions
DATA VisageProduction | VProduction con : {ConstructorIdent}
children : VisageChildren
rules : VisageRules
locrules : VisageRules
DATA VisageChild | VChild name : {Identifier}
tp : {Type}
inh : {Attributes}
syn : {Attributes}
rules : VisageRules
DATA VisageRule | VRule fieldattrs : {[(Identifier,Identifier)]}
attr : {Identifier}
pat : VisagePattern
rhs : Expression
owrt : {Bool}
|