1. Top » 
  2. スポンサー広告 » 
  3. コンパイラについてのメモ #6
  4. 大学関係 » 
  5. 計算機科学実験及実習 » 
  6. コンパイラについてのメモ #6

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

コンパイラについてのメモ #6

構文解析をした結果をうまく表現するために構文木を作る。
そのためにどんどん関数を作っていこう。

#include <string.h>
#include "parser.tab.h"

定数ノードの表現
tree make_constant_node(int i){
tree ne = (tree)malloc(sizeof(union node));
ne->co.op = CONSTANT;
ne->co.value = i;
return ne;
}

識別子の表現
tree make_token_node(char *s){
tree ne = (tree)malloc(sizeof(union node));

ne->tk.op = IDENTIFIER;
ne->tk.name = strdup(s);
return ne;
}

一つの接点、四つ組の表現
tree make_tuple(int op, tree t1, tree t2, tree t3, tree t4){
tree ne = (tree)malloc(sizeof(union node));
ne->tuple.op = op;
ne->tuple.a[0] = t1;
ne->tuple.a[1] = t2;
ne->tuple.a[2] = t3;
ne->tuple.a[3] = t4;
return ne;
}



共用体を使っているので、なんか旨く書けるみたい。
共用体が含む全ての構造体の共通メンバをうまくアクセス出来る技なんだって。

あ、そういえばまだ文法(yファイル、bisonが食べる)を書いてなかった。
関連記事
スポンサーサイト

Comment

コメントフォーム
このエントリへコメントを書く
(任意)
(任意)
(任意)
(必須) HTMLタグは使用できません
(任意) ID生成と編集に使用します
(任意) 非公開コメントにする

Page Top

Trackback

Trackback URI
http://parabola0.blog86.fc2.com/tb.php/381-d106a61f この記事にトラックバックする(FC2ブログユーザーのみ)

Page Top

訪問者

お引っこし。 http://parabola.sblog.jp/

プロフィール

parabola0

Author:parabola0
Twitter用ですが…。
プロフィール

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
リンク

このブログをリンクに追加する

QRコード
QRコード
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。