- 著者
-
甫水 佳奈子
脇田 建
佐々木 晃
- 雑誌
- 情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
- 巻号頁・発行日
- vol.6, no.2, pp.85-101, 2013-08-29
本稿は,JavaScriptの構文拡張を可能にするHygienic構文マクロシステムの実装技法を提案する.Hygienic構文マクロシステムは,マクロ展開の前後で変数の束縛や参照関係を破壊しない安全な構文マクロシステムである.このHygienic構文マクロシステムを利用することによって,プログラミング言語の構文の自由な拡張が可能になる.しかし,Hygienic構文マクロシステムは,S式という一貫した構文構造を持つSchemeには標準で組み込まれているものの,その他の一般的なプログラミング言語に実装された例はほとんどない.本稿では,まず,汎用的なプログラミング言語におけるHygienic構文マクロシステムの実装の難しさを示し,次に,本研究が提案するJavaScript向けHygienic構文マクロシステムの実装技法について述べる.提案する実装技法では,マクロ構文の追加によって拡張されるJavaScript構文を解析するための拡張可能なパーザの実現に解析表現文法を用い,マクロ展開は既存のSchemeマクロ展開器に委ねる.マクロ展開においては,マクロを含むJavaScriptコードをそれと等価なS式へと変換し,Schemeマクロ展開器で展開を行った後に,JavaScriptコードに逆変換するという言語間相互変換を行う.これらの工夫によりわずか2,000行弱のコンパクトな実装によってJavaScriptに対する記述力が高いHygienic構文マクロシステムを実現できた.