# HG changeset patch # User Kaito Tokumori # Date 1424535833 -32400 # Node ID bd84d247e3c4da06856ebb0f5eb9e211f4bdd8e3 # Parent 2d23041bd29a86f4e832066e6e89314395053952# Parent ca728d238e912e9cc3b43b4ded7edafc3512b125 merge diff -r ca728d238e91 -r bd84d247e3c4 s6/2015_02_24.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/s6/2015_02_24.html Sun Feb 22 01:23:53 2015 +0900 @@ -0,0 +1,156 @@ + + + + + Presen + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + +
+ + + + + + + +
+

CbCにおけるコードセグメントのプロトタイプの自動生成

+
+ Kaito Tokumori + +
+
+
+ +
+

研究目的

+

当研究室ではプログラムをコードセグメント、データセグメントという単位を用いて書くという手法を提案しており、その手法を用いてプログラミングを行う言語として"CbC"の開発を行っている。

+

CbCにおいてコードセグメントは処理の単位に相当し、データセグメントはその対象となるデータの単位となる。

+

データセグメントは C の構造体のように複数のデータ型の値を持つことができ、後から拡張することが可能である。また、構造を示すシグネチャを持ち、それを参照することで異なるバージョンのプログラム間でも正しく動作することが可能になる。

+
+ +
+

今週やったこと

+
    +
  • コードセグメントのプロトタイプ宣言を自動生成する手法の考案 +
+
+ +
+

前提条件

+
    +
  • プロトタイプ宣言の自動生成はコードセグメントに対してのみ行う。 +
  • プロトタイプ宣言を自分で書くことも許す。 +
  • 定義が見つからなかった場合は何もせず、エラー出力はclang/LLVMに任せる。 +
+
+ +
+

Plan A : 構文解析中にプロトタイプ宣言の自動生成を行う

+
    +
  1. プロトタイプ宣言のないコードセグメントへの継続を発見次第その定義を検索 +
  2. 定義に基づいてプロトタイプ宣言の自動生成 +
+

利点

+
    +
  • プログラマが書いたプロトタイプ宣言との衝突を気にしなくて良い +
  • 引数に構造体を含む場合にその定義を気にしなくて良い +
+

欠点

+
    +
  • 自動生成を行う度に全体を検索することになる +
+
+ +

Plan B : 最初にファイル全体を読んで自動生成を行う

+
    +
  1. 構文解析前にファイル全体を読み込む +
  2. 構造体の定義を解析 +
  3. コードセグメントの定義からプロトタイプ宣言の生成 +
+

利点

+ +

欠点

+ +
+ +
+ +
+ + + + diff -r ca728d238e91 -r bd84d247e3c4 s6/blank.css.less --- a/s6/blank.css.less Thu Dec 11 23:41:20 2014 +0900 +++ b/s6/blank.css.less Sun Feb 22 01:23:53 2015 +0900 @@ -86,6 +86,7 @@ div.highlight {background-color:@background-color-code; display: inline-block; _display: inline;} div > ul { list-style-type: square; font-size: @font-size-list;} +div > ol {font-size: @font-size-list;} li { margin-bottom: 15px;} p, dt, dd, td{ font-size: @font-size-text; }