著者
新妻 弘崇
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.7, no.2, pp.38-38, 2014-06-10

本研究では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++のコンパイル時の前処理として可能な限りの処理を行おうとする点である.このために,コンパイル時に前処理された後の実行プログラムが高速となる.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.

言及状況

Twitter (2 users, 2 posts, 0 favorites)

1 1 https://t.co/cpOj0liIIa
CiNii 論文 -  SchemeからC++への単純な変換 https://t.co/xM0PapNb6b みたいなのを思い出した

収集済み URL リスト