Skip to content

Instantly share code, notes, and snippets.

@jvranish
Created August 11, 2011 19:09
Show Gist options
  • Save jvranish/1140475 to your computer and use it in GitHub Desktop.
Save jvranish/1140475 to your computer and use it in GitHub Desktop.
preliminary AC AST definition
data Statement = ExprStmt ParsedExpr
| VarDef String
| ConstDef String ParsedExpr
| Foreign String
| Assign String ParsedExpr
| FuncDef String [ParsedStatement] Bool ParsedStatement
| Scope [ParsedStatement]
| For ParsedStatement ParsedStatement ParsedStatement ParsedStatement
| While ParsedExpr ParsedStatement
| DoWhile ParsedExpr ParsedStatement
| If Expr ParsedStatement (Maybe ParsedStatement)
| Return ParsedExpr
deriving (Show, Eq, Ord, Data, Typeable)
data ParsedStatement = ParsedStatement SourcePos Statement
deriving (Show, Eq, Ord, Data, Typeable)
data Expr = Call ParsedExpr [ParsedExpr]
| Id String
| Cast ParsedType ParsedExpr
| Dot ParsedExpr String
| StringLiteral String
| CharLiteral Char
| IntegerLiteral Integer
| FloatLiteral Double
deriving (Show, Eq, Ord, Data, Typeable)
data ParsedExpr = ParsedExpr SourcePos (Expr ParsedExpr)
deriving (Show, Eq, Ord, Data, Typeable)
data Type a = TypeName String
| Pointer a
| Array (Maybe Integer) a
| TCall a [a]
| Struct (Map.Map String a)
| Union (Map.Map String a)
| NType Int
| Func [a] Bool a -- bool indicates variable number of arguments
| DefaultInt
| DefaultFloat
| Var (Maybe String) (TypeConstraints a) -- optional variable name, and constraints
deriving (Show, Eq, Ord, Functor, Foldable, Traversable)
data ParsedType = ParsedType SourcePos (Type ParsedType)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment