お知らせ

ただいま、シンタックスハイライターの設定を見直しております。
プログラムが見にくくなっているページがありますが、ご容赦ください。

なんちゃってPascalを作ってみる(2)

プログラミング

こんにちは。

前回に続けてなんちゃってPascal略してNPascalを作ってみます。

構文解析木を作る準備

本当はデザインパターンのCompositeパターンを使って、構文解析木の葉と節を作るときれいにまとめられそうなのですが、うまく動きませんでした。

ということで暫定版。

#pragma once
#include"token.h"
#include
#include
#include
using namespace std;

class astNode{
public:
    astNode(string ty){
        _type = ty;
    }

    void addNode(astNode t){
        _lis.push_back(t);
    }

    void addToken(token t){
        _token = t;
    }

    string toFullString(){
        ostringstream ss;
        ss << _token.toFullString();
        for(auto l :_lis){
            ss << l.toFullString();
        }
        return ss.str();
    }
private:
    string _type;
    token _token;
    list _lis;
};

_token が葉で使いたくて、_lis が節で使いたいのですが、うまく書けませんでした。

ここで進まない方がよさそうなので、ダメダメ途中経過でおしまいにします。

それではまた。

Posted by kasugai