• 検索結果がありません。

SchemeからC++への単純な変換

N/A
N/A
Protected

Academic year: 2021

シェア "SchemeからC++への単純な変換"

Copied!
1
0
0

読み込み中.... (全文を見る)

全文

(1)情報処理学会論文誌. プログラミング. Vol.7 No.2 38 (June 2014). 発表概要. Scheme から C++ への単純な変換 新妻 弘崇1,a) 2013年11月11日発表. 本研究では Scheme 言語(R4RS)の部分集合から C++ 言語へ変換する手法 Scm2Cpp11 の提案と実装 を行う.Scm2Cpp11 の生成する C++ プログラムには編集が容易である点と,高速なプログラムである という 2 つの特徴がある.Scm2Cpp11 では型推論や alpha 変換といった高度な操作を行わない.単純な プログラムコードの文字列置換のみで Scheme から C++ への変換を行う.たとえば (car x) は car(x) に 変換される.単純な変換であるため,生成された C++ のプログラムは変換前の Scheme プログラムとの 対応が容易に分かるようになっている.生成された C++ プログラムは編集が容易なため,OpenMP を 使った並列化等も容易に行うことができる.また Scm2Cpp11 の生成する C++ プログラムは他の良く知 られた多くの Scheme 処理系より高速であるという特徴がある.高速となる理由は,単純な変換とするた めに,オブジェクトがデータ本体以外の型情報や環境情報などの付加情報を省かれて変換されるからであ る.たとえば Scheme の整数変数は C++ の int 型変数に変換される.int 型変数に変換されるため,他の 環境情報などを変換後のオブジェクトに格納しない.もう 1 つの理由は,Scm2Cpp11 の変換は C++ の template やマクロの機能を使って,C++ のコンパイル時の前処理として可能な限りの処理を行おうとす る点である.このために,コンパイル時に前処理された後の実行プログラムが高速となる.. Simple Translation from Scheme to C++ Hirotaka Niitsuma1,a) Presented: November 11, 2013. We propose and implement a translation method Scm2Cpp11 that translates from the subset of the Scheme language (R4RS) into C++ Language. Scm2Cpp11 has two advantages. The first advantage is that Scm2Cpp11 generates an editable C++ code. The second advantage is that Scm2Cpp11 generates a quite fast C++ program. Actually Scm2Cpp11 is just string replacement operator for programming code. Scm2Cpp11 does not include other operations like type inference alpha-conversion and so on. For example, Scm2Cpp11 translates (car x) into car(x). Thus finding correspondence between original Scheme code and translated C++ code is quite easy. Adding well-known C++ library’s function, for example OpenMP parallelization feature, to the editable translated C++ is also quite easy. A C++ program Scm2Cpp11 generates is faster than many other well-known Scheme implementations. Scm2Cpp11 translates a Scheme object into a C++ object which holds only data body. The translated C++ object does not have any additional environment information. For example, Scm2Cpp11 translates a Scheme integer variable into a C++ integer variable. The additional information are processed as a preprocess when C++ code compiled. The preprocess is described using C++ template and macro techniques. That is the reason why Scm2Cpp11 can generate efficient C++ programs.. 1 a). 岡山大学 Okayama University, Okayama 700–8530, Japan [email protected]. c 2014 Information Processing Society of Japan . 38.

(2)

参照

関連したドキュメント

そこで本章では,三つの 成分系 からなる一つの孤立系 を想定し て,その構成分子と同一のものが モルだけ外部から

行列の標準形に関する研究は、既に多数発表されているが、行列の標準形と標準形への変 換行列の構成的算法に関しては、 Jordan

前章 / 節からの流れで、計算可能な関数のもつ性質を抽象的に捉えることから始めよう。話を 単純にするために、以下では次のような型のプログラム を考える。 は部分関数 (

LLVM から Haskell への変換は、各 LLVM 命令をそれと 同等な処理を行う Haskell のプログラムに変換することに より、実現される。

わかりやすい解説により、今言われているデジタル化の変革と

自発的な文の生成の場合には、何らかの方法で numeration formation が 行われて、Lexicon の中の語彙から numeration

今回の調査に限って言うと、日本手話、手話言語学基礎・専門、手話言語条例、手話 通訳士 養成プ ログ ラム 、合理 的配慮 とし ての 手話通 訳、こ れら

本センターは、日本財団のご支援で設置され、手話言語学の研究と、手話の普及・啓