非常に単純な言語文法のためにPythonでインタープリタを作成しています。私はいくつかの子クラスを持つStatement
と呼ばれるスーパークラスを持っています。私は、キーワードを評価するCreateStatement
と呼ばれるスーパークラスのメソッドを持っており、見つかったキーワードに基づいて子クラスオブジェクトのインスタンスを作成します。子クラスの中には、このメソッドを呼び出す必要があるものがあります。オブジェクトを作成し、Pythonのキーワードに基づいてメソッドを呼び出す
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...
ので、あなたがStatement' '内に存在する割り当てと呼ばれる属性を定義したが、あなたはどのようにクラスを示していないことを期待していた:あなたはこの行はおそらく同様に間違っている
をもしかして内部にどのメソッドとデータフィールドがあるかを含む 'Statement'が定義されています。 –
あなたはこの種のもののために作られたPLYを見たいかもしれません (http://www.dabeaz.com/ply/) –
将来的にもっとコードを入れてください。このエラーは、 'Statement'の属性を参照しようとする行で発生しますが、' Statement'(またはその完全定義)の属性のリストは提供しません。あなたはまた、この「割り当て」があなたが参照しようとしていることを私たちに示さない。 – agf