それで、私は同様の質問を調べました、そして、私はまだ同じ問題を抱えていて、それを理解することができません。このプログラミングの割り当てでは、Cliteレキシコンの小さなサブセットの字句解析の簡略化されたバージョンを作成しています。入力ファイルからトークンを抽出し、分析結果を出力しています。辞書を使用して見つかった識別子のシンボルテーブルを作成しています。異なる行で同じ識別子を見つけた場合、それが見つかった行をシンボルテーブルに追加する必要があります。たとえば、2行目と7行目で識別子「number18」を見つけました。したがって、シンボルテーブルは{number18:2}から{number18:2,7}に移動する必要があります。
新しい行番号を現在の辞書エントリに追加しようとすると、問題が発生します。質問のタイトルに投稿したときにエラーが発生します。これがこれまでの私のコードです
y = 0
s2 = ()
stable = dict()
for line in open("Sample.txt","r"):
x1 = ''
for char in line:
if char.isalpha():
x1 = x1 + char
elif char.isdigit():
x1 = x1 + char
elif char == '.':
x1 = x1 + char
elif x1 != '':
break
#print (x1)
if (x1 == "for" or x1 == "bool" or x1 == "char" or x1 == "else" or x1 == "false" or x1 == "float" or x1 == "if" or x1 == "int" or x1 == "main" or x1 == "true" or x1 == "while"):
s2=(y,"Keyword",x1)
elif x1.isidentifier():
s2=(y,"Identifier",x1)
if x1 in stable.keys():
stable[x1].append(y)
else:
stable[x1]=y
elif x1.isdigit():
s2=(y,"Int",x1)
else:
s2=(y,"Float",x1)
print (s2)
y=y+1
print (stable)