module languages/asfix/syntax/Tree

imports languages/asfix/syntax/Annotations
imports languages/asfix/syntax/Symbol
imports languages/asfix/syntax/Attributes

exports

sorts Tree Args Production

context-free syntax

appl(prod:Production,args:Args) -> Tree {cons("appl")}
cycle(symbol:Symbol,length:NatCon)          -> Tree {cons("cycle")}
amb(args:Args)                  -> Tree {cons("amb")}
character:NatCon                -> Tree {cons("char")}

"[" {Tree ","}* "]"             -> Args {cons("list")}

"prod" "(" lhs:Symbols comma1:"," rhs:Symbol comma2:"," attributes:Attributes ")" -> Production {cons("default")}
list(rhs:Symbol)                                   -> Production {cons("list")}

hiddens

context-free start-symbols
  Tree