プログラミングと工作と

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

記号表作成の為の、こまごましたメソッド

構文解析中に記号表を作成する時、ちょっと調べる必要が発生することがあります。
そのひとつが、値のチェックです。
変数などの名前を指定して、その名前はどの値を持つかを返すメソッドを作ります。
処理の流れは次の様にします。

def which_value(self, name)
    if nameはリテラル:
        return name
    elif nameは記号表に既に存在する:
        return symbol[name][value]
    else
        エラー:未定義の定数を参照してませんか?

簡単なメソッドですが、最初のif文でリテラルかどうかを見る必要があります。
その、リテラルかどうかをチェックするメソッドも作らなければなりません。
今の仕様は、リテラルとしては整数とブーリアンだけなので簡単です。
今後進化させていく時に、このメソッドもパワーアップさせていきます。

def check_lit(self, name):
    lit = 'false'
    if name in ['true', 'false']:  #nameがブーリアンなら
        lit = 'true'
    if nameは整数:
        lit = 'true'
    return lit
     
引数nameがブーリアンか整数なら'true'を、違っていれば'false'を返すだけの簡単なメソッドです。

記号表を登録する準備が着々と進んでいますね。