Skip to content

Commit 9fe100c

Browse files
committed
fixes
1 parent 755a579 commit 9fe100c

File tree

4 files changed

+32
-33
lines changed

4 files changed

+32
-33
lines changed

interp_Lint.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,4 @@ def interp(self, p):
7575
ast1_1 = BinOp(read, Add(), neg_eight)
7676
pr = Expr(Call(Name('print'), [ast1_1]))
7777
p = Module([pr])
78-
interp_Lint(p)
78+
interp(p)

type_check_Cfun.py

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@
55

66
class TypeCheckCfun(TypeCheckCtup):
77

8-
def parse_type_annot(self, annot):
9-
match annot:
10-
case Name(id):
11-
if id == 'int':
12-
return int
13-
elif id == 'bool':
14-
return bool
15-
else:
16-
raise Exception('parse_type_annot: unexpected ' + repr(annot))
17-
case TupleType(ts):
18-
return TupleType([self.parse_type_annot(t) for t in ts])
19-
case FunctionType(ps, rt):
20-
return FunctionType([self.parse_type_annot(t) for t in ps],
21-
self.parse_type_annot(rt))
22-
case Subscript(Name('Callable'), Tuple([ps, rt])):
23-
return FunctionType([self.parse_type_annot(t) for t in ps.elts],
24-
self.parse_type_annot(rt))
25-
case Subscript(Name('tuple'), Tuple(ts)):
26-
return TupleType([self.parse_type_annot(t) for t in ts])
27-
case _:
28-
raise Exception('parse_type_annot: unexpected ' + repr(annot))
8+
# def parse_type_annot(self, annot):
9+
# match annot:
10+
# case Name(id):
11+
# if id == 'int':
12+
# return int
13+
# elif id == 'bool':
14+
# return bool
15+
# else:
16+
# raise Exception('parse_type_annot: unexpected ' + repr(annot))
17+
# case TupleType(ts):
18+
# return TupleType([self.parse_type_annot(t) for t in ts])
19+
# case FunctionType(ps, rt):
20+
# return FunctionType([self.parse_type_annot(t) for t in ps],
21+
# self.parse_type_annot(rt))
22+
# case Subscript(Name('Callable'), Tuple([ps, rt])):
23+
# return FunctionType([self.parse_type_annot(t) for t in ps.elts],
24+
# self.parse_type_annot(rt))
25+
# case Subscript(Name('tuple'), Tuple(ts)):
26+
# return TupleType([self.parse_type_annot(t) for t in ts])
27+
# case _:
28+
# raise Exception('parse_type_annot: unexpected ' + repr(annot))
2929

3030
def type_check_exp(self, e, env):
3131
match e:
@@ -53,8 +53,8 @@ def type_check_def(self, d, env):
5353
match d:
5454
case FunctionDef(name, params, blocks, dl, returns, comment):
5555
new_env = {x: t for (x,t) in env.items()}
56-
for p in params.args:
57-
new_env[p.arg] = self.parse_type_annot(p.annotation)
56+
for (x,t) in params:
57+
new_env[x] = t
5858
while True:
5959
old_env = copy.deepcopy(new_env)
6060
for (l,ss) in blocks.items():
@@ -66,7 +66,7 @@ def type_check_def(self, d, env):
6666
# trace('type_check_Cfun var_types for ' + name)
6767
# trace(d.var_types)
6868
case _:
69-
raise Exception('type_check_def: unexpected ' + repr(ss[0]))
69+
raise Exception('type_check_def: unexpected ' + repr(d))
7070

7171
def type_check_stmts(self, ss, env):
7272
if len(ss) == 0:
@@ -84,10 +84,8 @@ def type_check(self, p):
8484
for d in defs:
8585
match d:
8686
case FunctionDef(name, params, bod, dl, returns, comment):
87-
params_t = [self. parse_type_annot(p.annotation) \
88-
for p in params.args]
89-
env[name] = FunctionType(params_t,
90-
self.parse_type_annot(returns))
87+
params_t = [t for (x,t) in params]
88+
env[name] = FunctionType(params_t, returns)
9189
for d in defs:
9290
self.type_check_def(d, env)
9391
case _:

type_check_Cif.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ def type_check_exp(self, e, env):
6464
return int
6565
case Let(Name(x), rhs, body):
6666
t = self.type_check_exp(rhs, env)
67-
new_env = dict(env); new_env[x] = t
67+
new_env = dict(env)
68+
new_env[x] = t
6869
return self.type_check_exp(body, new_env)
6970
case _:
7071
raise Exception('error in type_check_exp, unexpected ' + repr(e))
@@ -91,7 +92,7 @@ def type_check_stmt(self, s, env):
9192
case Goto(label):
9293
pass
9394
case Return(value):
94-
value_t = self.type_check_exp(value, env);
95+
value_t = self.type_check_exp(value, env)
9596
case _:
9697
raise Exception('error in type_check_stmt, unexpected' + repr(s))
9798

@@ -108,7 +109,7 @@ def type_check(self, p):
108109
for (l, ss) in body.items():
109110
self.type_check_stmts(ss, env)
110111
if env == old_env:
111-
break;
112+
break
112113
p.var_types = env
113114
case _:
114115
raise Exception('error in type_check, unexpected ' + repr(p))

type_check_Ctup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class TypeCheckCtup(TypeCheckCwhile):
88
def type_check_exp(self, e, env):
99
match e:
1010
case Allocate(length, typ):
11-
return typ;
11+
return typ
1212
case Begin(ss, e):
1313
self.type_check_stmts(ss, env)
1414
return self.type_check_exp(e, env)

0 commit comments

Comments
 (0)