Mercurial > hg > Papers > 2021 > anatofuz-master
changeset 114:c5b8cf006038
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 06 Feb 2021 17:33:57 +0900 |
parents | b804a51037c7 |
children | 1b3f1e6b45bc |
files | paper/chapter/06-evaluation.tex paper/chapter/news-items.tex paper/final.pdf paper/master_paper.pdf |
diffstat | 4 files changed, 22 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter/06-evaluation.tex Sat Feb 06 17:18:46 2021 +0900 +++ b/paper/chapter/06-evaluation.tex Sat Feb 06 17:33:57 2021 +0900 @@ -14,8 +14,18 @@ 本研究によってPerlトランスパイラレベルでのエラーの生成を可能にし、 GearsOSのメタレベルのコードを読まずともバグ検知が可能となった。 またInterfaceのパーサーなどのAPIを定義したことによって、 トランスパイラ側での様々な処理の拡張性を高めることが可能となった。 +しかし導入したジェネリクス機能については議論の余地がある。 +Perlトランスパイラ側での実装を行ったが、非常に実装するのが困難であった。 +これはC言語から派生したGearsOSのシンタックスと、それを正規表現を主に使ってコード変換を行うPerlトランスパイラが、ジェネリクスとの相性が合わなかった為である。 +ジェネリクスを使う場合、GearsOSのコードを字句解析や構文解析を詳細にする必要があることが実装を通して判明した。 +しかしこれをPerlトランスパイラで行うと、Perl側でCbCコンパイラを実装することになる。 +これはもはやCbCコンパイラ側にジェネリクスを導入したほうが信頼性が高い。 +さらにPerlトランスパイラは基本置換で処理を行う。 +ジェネリクスの場合、型名を置換する必要があり、不必要な場所まで置換してしまう恐れがある。 +その為Perlトランスパイラレベルではジェネリクスのサポートを続けるのは困難であると考える。 + \section{GearsOSのメタ計算} 従来のGearsOSではcontext.hやStubCodeGearなどのメタレベルのコードは、比較的手動で実装する必要があった。 自由度は高いものの、様々な場面で登場するメタレベルのコードをすべて書くのは煩雑である。 本研究によってメタ計算の自動生成機能がより強化され、さらにメタレベルの計算を活用することが可能となった。 -特にmeta.pmによるMetaCodeGearの切り替えは強力であり、任意のMetaCodeGearに継続することで、モデル検査やGearsOSのデバッグ機能などを組み込むことが可能となった。 \ No newline at end of file +特にmeta.pmによるMetaCodeGearの切り替えは強力であり、任意のMetaCodeGearに継続することで、モデル検査やGearsOSのデバッグ機能などを組み込むことが可能となった。context.hGen
--- a/paper/chapter/news-items.tex Sat Feb 06 17:18:46 2021 +0900 +++ b/paper/chapter/news-items.tex Sat Feb 06 17:33:57 2021 +0900 @@ -63,4 +63,14 @@ 従来はInterface、Implの型を定義し、使いたいDataGearを決めると、手動でcontext.hにDataGearの型を記述する必要があった。 この型情報はコンパイル時に決定するので、自動化が可能である。 その為Perlトランスパイラを使い、自動的に生成する機能を実装した。 -詳細は\ref{sec:context.hGen}章で述べる。 \ No newline at end of file +詳細は\ref{sec:context.hGen}章で述べる。 + +\section{GearsOSの初期化ルーチンの自動生成} +GearsOSの例題を作製する際に必要な初期化ルーチンを自動生成するシンタックスを導入した。 +これによってGearsOSの例題を作製する際に、コピーアンドペーストで行っていた関数定義を省略することができた。 +詳細は\ref{sec:gmain}章で述べる。 + +\section{ジェネリクスのサポート} +GearsOSで型変数を使い、様々な型に対応するコードを生成できるジェネリクス機能を追加した。 +これによって型ごとにCodeGearの定義をする必要がなくなり、処理の共通化が図れる。 +詳細は\ref{sec:generics}章で述べる。 \ No newline at end of file