Skip to content

Commit 633f1e7

Browse files
committed
Bug fix: get_tree when using no parameter functions
当调用无参数的函数是,其parameters会成为None,导致调用get_tree函数报错,添加一个判断即可解决问题
1 parent d7e423d commit 633f1e7

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

src/AST/function.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ def __init__(self, id, parameters, statements, returns=None, *args, **kwargs):
1313
super().__init__(*args, **kwargs)
1414

1515
def get_tree(self, level=0):
16-
return LEVEL_STR * level + self.type + ' ' + str(self.id) + '\n' + self.parameters.get_tree(level+1) + '\n' + self.statements.get_tree(level+1)
16+
if self.parameters:
17+
return LEVEL_STR * level + self.type + ' ' + str(self.id) + '\n' + self.parameters.get_tree(level+1) + '\n' + self.statements.get_tree(level+1)
18+
else:
19+
return LEVEL_STR * level + self.type + ' ' + str(self.id) + '\n' + self.statements.get_tree(level+1)
1720

1821
def exe(self):
1922
stack.add_function(self)
@@ -26,7 +29,10 @@ def __init__(self, id, parameters=None, *args, **kwargs):
2629
super().__init__(*args, **kwargs)
2730

2831
def get_tree(self, level=0):
29-
return LEVEL_STR * level + self.type + ' ' + str(self.id) + '\n' + self.parameters.get_tree(level+1)
32+
if self.parameters:
33+
return LEVEL_STR * level + self.type + ' ' + str(self.id) + '\n' + self.parameters.get_tree(level+1)
34+
else:
35+
return LEVEL_STR * level + self.type + ' ' + str(self.id)
3036

3137
def exe(self):
3238
new_dict = {} # {变量名: (值, 类型, 是否是常量)}

test/test.cpc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
DECLARE a : INTEGER
2-
a <- 1
3-
OUTPUT a
1+
FUNCTION a RETURNS INTEGER
2+
RETURN 1
3+
ENDFUNCTION
4+
5+
OUTPUT 1

0 commit comments

Comments
 (0)