module M0ld.AST where
type Register = [Char]
type Label = [Char]
data Value = Var [Char] | IntegerConstant Integer | StringConstant [Char] | None | SubMold [Stmt]
deriving (Show,Eq,Ord)
data Capture = Capture Register [Register] [Register]
deriving (Show,Eq,Ord)
data HintType = Constant | RI
deriving (Show,Eq,Ord)
data Stmt = LabelDef Label | Decl Register Value | Goto Label | Br Register Label Label | Call Register Register Capture | Call2 Register Register Register Register | Assign Register Register | Hint HintType Register Value
deriving (Show,Eq,Ord)
data Argument = Pos Register | Named Register Register