まずは、エラー関数を分割化
token関数の前に、簡単なエラー関数を分割化してみました。
#!/usr/bin/python
# coding: utf-8
class err:
def error(self, er):
if er == 1:
e = u" 突然ファイルの終端になっています"
elif er == 2:
e = u" }はトークンの始まりには出来ません"
elif er == 3:
e = u" 誤った記号が使用されています"
elif er == 4:
e = u" 予約語が変数名に使われてるよ!"
elif er == 5:
e = u" ここは','か':'がくるところでは?"
elif er == 6:
e = u" ':'コロンが抜けてませんか?"
elif er == 7:
e = u" 型名が間違ってませんか?"
elif er == 8:
e = u" ';'セミコロンが抜けていませんか?"
elif er == 9:
e = u" ここは'begin'か非キーワードのくるところ!"
elif er == 10:
e = u" 予約語が定数名に使われてるよ!"
elif er == 11:
e = u" ここは、「=」がくるところでしょ?"
elif er == 12:
e = u" '='の右側がヘンですよ!"
elif er == 13:
e = u" '+','-'のあとには整数がくるはずですよ!"
elif er == 14:
e = u" ここは'var'か'begin'か非キーワードのくるところ!"
elif er == 15:
e = u" キーワード'begin'がないよ!"
elif er == 16:
e = u" キーワード'end'がないよ!"
elif er == 17:
e = u" ピリオド'.'がないよ!"
elif er == 18:
e = u" キーワード'const'がないよ!"
elif er == 19:
e = u" キーワード'var'がないよ!"
elif er == 20:
e = u" キーワード'program'がないよ!"
elif er == 21:
e = u" プログラム名がないよ!"
elif er == 22:
e = u" 'end.'の後になんか文があるよ!"
elif er == 4:
e = u" 予約語が変数名に使われてるよ!"
elif er == 4:
e = u" 予約語が変数名に使われてるよ!"
print('Error' + str(er) + e)
これを、ファイル「err.py」として保存する。
以下のテストファイル「classtest.py」でerr.pyをインポートして動作させてみた。
from err import *
e = err()
e.error(1)
e.error(2)
実行結果が↓
~/PasAvr/test$ python classtest.py
Error1 突然ファイルの終端になっています
Error2 }はトークンの始まりには出来ません
~/PasAvr/test$
ちゃんと呼べています。
これで、エラー関数は別ファイルとして書いて行けます。