プログラミングと工作と

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

どんどん行っちゃうよ

今日は、3・4番めの文法規則

3. CONSTS   →  'constCONST_STMTS
                      →  λ
4. VARS      →  'var'  VAR_STMTS
                    →  λ
            
を書いてみます。ほぼ同じなので、ほぼコピペでいけますね。

def consts(token):
    global token
    if token != 'const':
        エラー:キーワード'const'がないよ!    
    if next_token() not in NON_KEY_ID:
        エラー:予約語が定数名に使われてるよ!
    const_stmts()
    

def vars(token):
    global token
    if token != 'var':
        エラー:キーワード'var'がないよ!    
    if next_token() not in NON_KEY_ID:
        エラー:予約語が変数名に使われてるよ!
    var_stmts()
    
    
構造は全く同じですね。
ちょっと簡単すぎたから、調子に乗って5番目も行っちゃいます。

5. BEGIN_END STMT  →  'begin' 'end' '.'

def begin_end_stmt(token):
    global token
    if token != 'begin':
        エラー:キーワード'begin'がないよ!
    if next_token() != 'end':
        エラー:キーワード'end'がないよ!
    if next_token() != '.':
        エラー:ピリオド'.'がないよ!
    next_token()


なんかグイグイ進んで気持ちいいです。