プログラミングと工作と

PythonとかPascalとかAVRマイコンとか、コンパイラつくったり電子工作なんかを楽しんでいるおっさんの記録

まずは、エラー関数を分割化

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$

ちゃんと呼べています。
これで、エラー関数は別ファイルとして書いて行けます。