-
Notifications
You must be signed in to change notification settings - Fork 0
/
SkelCinnabar.hs
84 lines (79 loc) · 2.19 KB
/
SkelCinnabar.hs
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
module SkelCinnabar where
-- Haskell module generated by the BNF converter
import AbsCinnabar
import ErrM
type Result = Err String
failure :: Show a => a -> Result
failure x = Bad $ "Undefined case: " ++ show x
transIdent :: Ident -> Result
transIdent x = case x of
Ident string -> failure x
transProgram :: Program -> Result
transProgram x = case x of
Prog stmts -> failure x
transBlock :: Block -> Result
transBlock x = case x of
SBlock stmts -> failure x
transStmt :: Stmt -> Result
transStmt x = case x of
SWhile expr block -> failure x
SCond expr block -> failure x
SCondElse expr block1 block2 -> failure x
SAssign lval expr -> failure x
SReturn expr -> failure x
SPrint expr -> failure x
SAssert expr -> failure x
SExpr expr -> failure x
transLVal :: LVal -> Result
transLVal x = case x of
ATuple lvals -> failure x
AAt expr1 expr2 -> failure x
AMember expr ident -> failure x
AVar ident -> failure x
transExpr :: Expr -> Result
transExpr x = case x of
ELambda idents expr -> failure x
EFun idents block -> failure x
EIf expr1 expr2 expr3 -> failure x
EOr expr1 expr2 -> failure x
EAnd expr1 expr2 -> failure x
ERel expr1 relop expr2 -> failure x
EAdd expr1 addop expr2 -> failure x
EMul expr1 mulop expr2 -> failure x
EPow expr1 expr2 -> failure x
ENot expr -> failure x
ENeg expr -> failure x
ECall expr exprs -> failure x
EMember expr ident -> failure x
EAt expr1 expr2 -> failure x
EExtend expr1 expr2 -> failure x
ENew expr -> failure x
EChar char -> failure x
EString string -> failure x
ELitInt integer -> failure x
ELitTrue -> failure x
ELitFalse -> failure x
EVar ident -> failure x
EList exprs -> failure x
EListComp expr1 lval expr2 -> failure x
EDict dictmaps -> failure x
transDictMap :: DictMap -> Result
transDictMap x = case x of
EDictMap expr1 expr2 -> failure x
transRelOp :: RelOp -> Result
transRelOp x = case x of
Lt -> failure x
Le -> failure x
Gt -> failure x
Ge -> failure x
Eq -> failure x
Ne -> failure x
transAddOp :: AddOp -> Result
transAddOp x = case x of
Add -> failure x
Sub -> failure x
transMulOp :: MulOp -> Result
transMulOp x = case x of
Mul -> failure x
Div -> failure x
Mod -> failure x