非常に単純な言語文法のインタープリターを Python で作成しています。Statement
いくつかの子クラスを持つスーパークラスがあります。スーパークラスにキーワードを評価するメソッドがあり、CreateStatement
見つかったキーワードに基づいて、子クラス オブジェクトのインスタンスを作成します。一部の子クラスは、このメソッドを呼び出す必要があります。
私の問題は、次のエラーが発生することです。
AttributeError: 'Statement' object has no attribute 'Assignment'
ヘルプ!
import re
from TokenHandler import TokenHandler
from ParserException import ParserException
class Statement(object):
tokens = []
executedTokens = []
def __init__(self, tokenlist):
self.tokens = tokenlist
def getCurrentToken(self):
print self.tokens[0]
return self.tokens[0]
def createStatement(self):
currenttoken = self.getCurrentToken()
t = TokenHandler()
if currenttoken == "print":
p = Print(self.tokens)
return p
elif t.isVariable(currenttoken):
a = Assignment(self.tokens)
return a
elif currenttoken == "if":
i = IF(self.tokens)
return i
elif currenttoken == "while":
w = While(self.tokens)
return w
elif currenttoken == "begin":
s = self.CompoundStatement(self.tokens)
return s
else:
raise ParserException('Reserved word \'end\' expected')
#...other methods...
from Statement import Statement
from TokenHandler import TokenHandler
import VariableException
class Assignment(Statement):
def __init__(self, tokens = []):
super(Assignment, self).__init__(tokens)
#...other methods...