module stratego/rtg/signature
/**
* Main RTG structure
*/
signature
constructors
RTG : Start * ProdRules -> RTG
Start : List(NonTerm) -> Start
ProdRules : List(ProdRule) -> ProdRules
ProdRule : NonTerm * List(AnnotateTreeFN) -> ProdRule
: TreeFN -> AnnoTreeFN
Appl : Term * List(AnnoTreeFN) -> TreeFN
Ref : NonTerm -> TreeFN
Annotated : TreeFN * List(Labelled) -> AnnoTreeFN
Labelled : Id * AnnoTreeFN -> Labelled
/**
* Non Terminals
*/
signature
constructors
String : NonTerm
Int : NonTerm
Nonterm : NonTermId -> NonTerm
Set : List(NonTerm) -> NonTerm
Generated : TreeFN -> NonTerm
Term : Id -> Term
Quoted : List(QuotedIdPart) -> Id
Plain : String -> Id
Chars : String -> QuotedIdPart
EscapeSeq : Int -> QuotedIdPart
/**
* Terminals
*/
signature
constructors
/**
* User-defined terminal.
*/
Term : Id -> Term
/**
* [x | xs]. A cons terminal application must
* always have 2 arguments, of which the 2nd must a list.
*/
ConsTerm : Term
/**
* []. A nil terminal application is not allowed
* to have any arguments.
*/
NilTerm : Term
/**
* Tuple of n elements.
*
* The number of arguments
* of a tuple terminal application must always be n.
*/
TupleTerm : Int -> Term
/**
* Integer terminal.
*
* Cannot have arguments.
*/
IntTerm : Term
/**
* String terminal
*
* Cannot have arguments.
*/
StringTerm : Term
/**
* [xs*, xs*]. A conc terminal application must
* always have 2 arguments. both must a list.
*/
ConcTerm : Term
SomeTerm : Term
NoneTerm : Term