メソッドを集めて、記号表クラスファイルをつくった!
さて、ここ数日作ってきたメソッドを組み合わせて、記号表クラスのファイル「sym.py」を作ってみた。
#!/usr/bin/python
# coding: utf-8
class sym:
def __init__(self, token, e):
self.symbol = {}
self.e = e
self.token = token
def check_int(self, st):
i = 0
length = len(st)
intcheck = 'true'
if st[0] == '-':
i = 1
while i < length:
if st[i] not in self.token.digit:
intcheck = 'false'
break
i = i + 1
return intcheck
def check_lit(self, name):
lit = 'false'
if name in ['true', 'false']:
lit = 'true'
if self.check_int(name):
lit = 'true'
return lit
def which_value(self, name):
if self.check_lit(name):
return name
elif name in self.symbol:
return self.symbol[name]['value']
else:
error(25)
def insert(self, name, typ, mod, val, alc, uni):
i = 0
id_len = len(name)
while i < id_len:
nam = ''
while i < id_len:
nam = nam + name[i]
i = i + 1
if i < id_len:
if name[i] == ',':
i = i + 1
break
if nam in self.symbol:
self.e.error(23)
if nam in self.token.keyword:
self.e.error(24)
self.symbol[name] = {'type':typ, 'mode':mod, 'value':val,
'alloc':alc, 'units':uni}
昨日まで作ってきたメソッドの「self.」やディクショナリをちゃんと宣言したり、エラー関数メソッドのエラー内容を追加したりした。
あとは、構文解析ファイル内の記号を保存するべき場所に、今日作ったクラスメソッドを入れていく作業が残っています。
明日以降に変更していきます。