抽象構文木を実装した。

こんな感じで実装した。

Astをtypedefで実装。

typedef struct Ast {
  char type; //
  union {
    int ival;
    char *sval;
    struct {
      struct Ast *left;
      struct Ast *right;
    };
  };
} Ast;

使用している箇所のロジックはこの辺。 乗算/除算のときはASTの作る順番を変える必要があるとか、そういうのの実装が難しい。 Cじゃなかったらもっといい感じに書けるよなあ、、と思いつつ、セルフコンパイルしたいので頑張る。

まだ8ccをなぞっている感じだけど、ASTを使えるようになって色々構造化できそうなので、頑張りたい。気が済むまでは続けていく。