comparison paper/chapter/05-perl.tex @ 69:9950430ccc47

...
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Wed, 03 Feb 2021 21:29:14 +0900
parents bb057c720016
children d50a39e6e6a7
comparison
equal deleted inserted replaced
68:bb057c720016 69:9950430ccc47
33 従来はStubの生成や、 引数の変更などを行っていたが、 さらにメタレベルのコードをトランスコンパイラで作製したい。 33 従来はStubの生成や、 引数の変更などを行っていたが、 さらにメタレベルのコードをトランスコンパイラで作製したい。
34 トランスコンパイラ上でメタレベルのコードを作製することによって、 GearsOS上でのアプリケーションの記述が容易になり、かつメタレベルのコードを柔軟に扱うことができる。 34 トランスコンパイラ上でメタレベルのコードを作製することによって、 GearsOS上でのアプリケーションの記述が容易になり、かつメタレベルのコードを柔軟に扱うことができる。
35 本研究では様々なメタレベルのコードを、トランスコンパイラで生成することを検討した。 35 本研究では様々なメタレベルのコードを、トランスコンパイラで生成することを検討した。
36 36
37 37
38 \section{Perlによるトランスコンパイラ用のライブラリ作製} 38 \section{トランスコンパイラ用のPerlライブラリ作製}
39 従来のPerlトランスコンパイラはgenerate\_stub.plとgenerate\_context.plの2種類のスクリプトで構築されていた。 39 従来のPerlトランスコンパイラはgenerate\_stub.plとgenerate\_context.plの2種類のスクリプトで構築されていた。
40 これらのスクリプトはそれぞれ独立した処理を行っていた。 40 これらのスクリプトはそれぞれ独立した処理を行っていた。
41 41
42 しかし本研究を進めるにつれて、 Interfaceのパーサーやメタ計算部分の操作を行うAPIなど、 Perlスクリプトで共通した実装が見られた。 42 しかし本研究を進めるにつれて、 Interfaceのパーサーやメタ計算部分の操作を行うAPIなど、 Perlスクリプトで共通した実装が見られた。
43 さらにgenerate\_stub.plらPerlスクリプトの行数や処理の複雑度が上がり、 適切に処理をモジュール化する必要が生じた。 43 さらにgenerate\_stub.plらPerlスクリプトの行数や処理の複雑度が上がり、 適切に処理をモジュール化する必要が生じた。
74 \begin{itemize} 74 \begin{itemize}
75 \item Stub Code Gear生成時に呼び出されるモジュール 75 \item Stub Code Gear生成時に呼び出されるモジュール
76 \end{itemize} 76 \end{itemize}
77 \end{itemize} 77 \end{itemize}
78 78
79 これらはgenerate\_stub.plおよびgenerate\_context.plおよび、本研究で作製したPerlのツールセットからも呼び出される。
80
79 \section{context.hの自動生成} 81 \section{context.hの自動生成}
80 GearsOSのContextの定義はcontext.hにある。 82 GearsOSのContextの定義はcontext.hにある。
81 ContextはGearsOSの計算で使用されるすべてのCodeGear、 DataGearの情報を持っている。 83 ContextはGearsOSの計算で使用されるすべてのCodeGear、 DataGearの情報を持っている。
82 context.hではDataGearに対応する\texttt{union Data}型の定義も行っている。 84 context.hではDataGearに対応する\texttt{union Data}型の定義も行っている。
83 Data型はCの共用体であり、 Dataを構成する要素として各DataGearがある。 85 Data型はCの共用体であり、 Dataを構成する要素として各DataGearがある。