プログラミング・エクスペリエンスの新潮流 -言語設計から産業応用まで-:5.ドメイン専用言語と言語指向プログラミング
2
0
0
全文
(2) ドメイン専用言語と言語指向プログラミング. 編集. 投影. 実行. み 込 め 埋 全. 結果. 図 -2 投影エディタを利用した開発. クベンチだ.投影エディタでは,ユーザはコード補. 結果. DSL. プログラム. み 込 め 埋 い 浅. テキスト. 実行. 構文解析. 深い 埋め 込み. プログラム. 実行. 構文解析. 結果. 図 -3 言語内 DSL の分類. 完コマンドを打つことで DSL のプログラムを記述 する.コード補完コマンドを打つと,その部分で使. る.図 -3 にこれらの概略を示す.浅い埋め込みで. うことのできる構文の一覧が表示される.ユーザは. は実行時に DSL プログラムの実行結果を生成する.. それらの中から適切なものを選ぶことでコードを記. 要するに,DSL のように見える普通のライブラリ. 述する.この方式のユニークな点は,図 -2 のように,. である.深い埋め込みでは実行時に DSL プログラ. ユーザがテキストではなく構文木を記述する点であ. ムの構文木を生成し,それを実行する.全埋め込み. る.エディタ上に表示されるプログラムは,構文木. では実行時に DSL のソースコード文字列を生成し,. をテキストとして投影したものとなっている.プロ. それを構文解析して実行する.. グラム中の空欄部分をコード補完によって埋めるこ. 浅い埋め込みの DSL は実装が容易だが,DSL 固. とで,ユーザは構文木のノードを選択しているので. 有の最適化を行うことができない.深い埋め込みは. ある.この方式は複雑な構文解析や名前解決の必要. DSL 固有の最適化が可能だが,実装はやや煩雑にな. がなく,構文木,投影関数,およびその意味論を実. る.これらの DSL は文法がホスト言語によって制. 装するだけで DSL 処理系とエディタを実装するこ. 限されるが,全埋め込みであれば自由な文法の DSL. とができる.. を設計できる.しかし,全埋め込みの DSL は実装 コストが高い上,ホスト言語の開発環境をほとんど. 言語内 DSL. 活用できない.これらの手法は一長一短で,それぞ. ほかの DSL 開発手法として,言語内 DSL(埋め込. 本稿では,DSL の開発コストを低減する開発手法. み DSL とも言う)を開発するというものがある.言. として,言語ワークベンチと言語内 DSL という 2 つ. 語内 DSL は DSL を汎用言語のライブラリとして実. の手法を紹介した.このような取り組みは,コード. 装したものである.単なるライブラリなので,ユー. の可読性を向上させ,保守を容易にするのに役立つ.. れの短所を補うような研究が進められている.. ザは気軽にインポートして利用することができる.. (2017 年 7 月 26 日受付). ベースとなる汎用言語(ホスト言語)の開発環境が そのまま使えるのも利点の 1 つである. 本稿では,言語内 DSL の作り方を浅い埋め込み (shallow embedding),深い埋め込み(deep em-. bedding),全埋め込み(full embedding)に分類す. 市川和央 [email protected] 東京大学 情報理工学系研究科 学術支援職員,プログラミング言語 の構文拡張に関する研究に従事,まもなく博士号取得予定.. 情報処理 Vol.58 No.11 Nov. 2017. 1021.
(3)
関連したドキュメント
具体的には、これまでの日本語教育においては「言語から出発する」アプローチが主流 であったことを指摘し( 2 節) 、それが理論と実践の
注5 各証明書は,日本語又は英語で書かれているものを有効書類とします。それ以外の言語で書
では,この言語産出の過程でリズムはどこに保持されているのか。もし語彙と一緒に保
Aの語り手の立場の語りは、状況説明や大まかな進行を語るときに有効に用いられてい
[1] J.R.B\"uchi, On a decision method in restricted second-order arithmetic, Logic, Methodology and Philosophy of Science (Stanford Univ.. dissertation, University of
2021] .さらに対応するプログラミング言語も作
しかし,物質報酬群と言語報酬群に分けてみると,言語報酬群については,言語報酬を与
Guasti, Maria Teresa, and Luigi Rizzi (1996) "Null aux and the acquisition of residual V2," In Proceedings of the 20th annual Boston University Conference on Language