ⓒ2012 Information Processing Society of Japan 1
Mini Konoha: 最 小 構 成 目 指
ィ ペ ン ダ ス ク 言 語 設 計
井出真広
†1
菅谷
†2
倉光君郎
†2
近年 言語 適応分 広 適応分 設定 問題 解決 言語 利用
い 多く 開発者 ン 言語 文法 対 小 不満を持 独自
ン あわ DLS 新規開発を い 本発表 提案 Sugar 定義 構文
を拡張 柔軟 手段を提供 本発表 Sugar を 言語 統合 MiniKonoha言語を紹
1. め
言 語 ン や や 生 産 性
注 目 集 広 く 用 行 わ そ 日
言 語 適 応 分 Web ン 開 発
開 発 分 ン ン
多 様 ン い 利 用 産 業 界
言 語 関 心 高 い
々 静 的 型 付 特 徴 を KonohaScript[1] オ ン ソ 開 発 を 行 現 在 JST/DEOS
い 害 対 策 化 セ 科 を 研
究 KonohaScript 静 的 型 付
型 検 査 機 能 を 活 高 信 頼 実 行 基
盤 あ D-Script ン ン[2] 開 発 を 進 い
ン 分 一 般 高 い ソ
信 頼 性 を 実 現 複 雑 仕 様 や 実 装 忌 避
傾 向 あ 言 語 仕 様 や 処 理 系
い 当 2012年3月 開 催 DEOS国
ン い D-Script 要 望
書 間 違 え や 処 理 系 を 最 小 化 ン
言 語 強 く 求
一 方 D-Script 対 象 ン
害 対 策 多 様 要 望 あ 汎 例 を あ 以 あ
組 込 を 含 ソ 負 荷 少
い 書
大 を 処 理 害 原 因 解 析 行 え
分 散 を 連 動 制 御 う
実 行 時 い 変 更 を 保 証 セ 機
構
複 雑 処 理 を 簡 単 書
害 対 策 多 様 ン 利 用
術 あ ひ 言 語 解 決 を
†1横 浜 国 立 大 学
†2 横 浜 国 立 大 学 / 現 在 日 本 科 学 術 振 興 機 構 CREST
難 い 現 在 Bourne Shell やPerl, Python, Ruby
様 々 術 併 用 い 特 性
あ わ 使 い 分 記 述 や 生
手 法 広 く 使 わ い 要 望 対 様 々
ン 問 題 対 高 信 頼 実 行 基 盤 を
う 作 々 求 課 題 い
2. Mini Konoha +文 法 拡 張 可 能 パ ー サ
々 最 小 言 語 構 拡 張
ン 容 易 適 合 や い 言 語
設 計 実 装 を 目 指 い 拡 張 手 法 SugarJ 実 現 文 法 拡 張 を 用 文 法 拡 張 を
記 述 を 目 指 い え
文 法 を 使 い 次 う Sugar
ン
じmport sugar.closure.*;
Sugar 文 法 拡 張 可 能 呼 称 あ
対 抽 象 構 文 木 を 構 築
API 型 検 査 器 ン を 提 供 図 1
Sugar 概 要 あ ン 対
ン ッ ン 列 対 ン ッ
ン 変 換 方 法 を 記 述
任 意 文 字 対
ン 任 意 ン 対
式 単 項 演 算 式 二 項 演 算 式
型 検 査 器
Mini Konoha Sugar 付 属 言 語 提 供 同 時 Mini Konoha自 体 Sugar
行 う Sugar を 通 Mini
Konohaを Mini Konoha 拡 張 可 能
Sugar 提 供 抽 象 構 文 木 ン
生 化 可 能 様 々
ッ 実 行 可 能 生 可 能
ⓒ2012 Information Processing Society of Japan 2 現 在 実 装 MiniKonoha ン (MiniVM)
加 え LLVMを 用 い ネ 生 (JIT ン
) JVM, CLI, JavaScript 変 換 可 能 い
図 1 MiniKonoha Sugar Parser
3. 最 小 言 語 仕 様 と 安 全 性 議 論
Mini Konoha KonohaScriptを 言 語 仕 様
を 最 小 化 い Konoha 特 性 を 静 的
型 付 PythonやRuby 動 的 型 付 言 語 機 能 静 的 型 付 dynamic 型
図2 Mini Konoha vs. KonohaScript
図2 Mini Konoha KonohaScript 比
比 較 あ 原 則
Mini Konoha Sugar Parser 文 法 拡 張 可 能 十
分 機 能 あ 十 分 あ え while文 拡 張
while文 を 拡 張 while文 を 用
い 文 法 拡 張 を 行 う Mini Konoha
言 語 仕 様 ン 言 語 書 や
考 慮 い 必 要 あ
々 最 小 セ ッ 機 能 を 選 判 断 基 準 そ
機 能 安 全 う あ え while 文
容 易 無 限 を 書 く 無 限
実 行 前 静 的 検 証 難 い 知 い
そ while文 を 制 限 無 限 回 避
Mini Konoha 文 法 を ン
う 対 応 可 能 表 1 言 語 文 法 安 全 性
々 言 語 文 法 安 全 性 を 保 証 を 用 い 議 論 Mini Konoha 言 語 処 理 系 そ 動 作
安 全 性 検 証 作 業 を 進 い
4. わ
本 論 文 言 語 を 構 最 小
文 法 設 計 を 行 い 拡 張 形 言 語 ン を 設 計
ン ン 容 易
適 合 言 語 を 設 計 実 装 後
細 分 化 文 法 安 全 性 評 価 を 行 い
ン 言 語 設 計 を 目 指 行 く 予 定 あ
謝 辞 本 研 究 ,JST/CREST 実 用 化 を 目 指 組 込
用 ン オ ン 領
域 研 究 助 を 受 行 わ .
参 考 文 献
1) Kimio Kuramitsu: KonohaScript: static scripting for practical use. OOPSLA Companion 2011: pp. 27-28, 2011.
2) 倉光君郎. 拡張性 あ 組 込 ン を 実 現
ン 言 語 開 発, 情 報 処 理 学 会 論 文 誌. 51(12), pp. 2185-2194, 2010
3) Sebastian Erdweg, Tillmann Rendel, Christian Kastner, and Klaus Ostermann. SugarJ: Library-based syntactic language extensibility. In Proc of SPLASH2011, 2011.