WEKO3
アイテム
Racket言語のための抽象解釈に向けて
https://ipsj.ixsq.nii.ac.jp/records/220216
https://ipsj.ixsq.nii.ac.jp/records/220216941745c4-2797-41af-be97-bf020845726f
名前 / ファイル | ライセンス | アクション |
---|---|---|
![]() |
Copyright (c) 2022 by the Information Processing Society of Japan
|
|
オープンアクセス |
Item type | Trans(1) | |||||||
---|---|---|---|---|---|---|---|---|
公開日 | 2022-09-15 | |||||||
タイトル | ||||||||
タイトル | Racket言語のための抽象解釈に向けて | |||||||
タイトル | ||||||||
言語 | en | |||||||
タイトル | Towards an Abstract Interpretation for the Racket Language | |||||||
言語 | ||||||||
言語 | jpn | |||||||
キーワード | ||||||||
主題Scheme | Other | |||||||
主題 | [発表概要, Unrefereed Presentatin Abstract] | |||||||
資源タイプ | ||||||||
資源タイプ識別子 | http://purl.org/coar/resource_type/c_6501 | |||||||
資源タイプ | journal article | |||||||
著者所属 | ||||||||
神奈川大学理学部情報科学科 | ||||||||
著者所属(英) | ||||||||
en | ||||||||
Department of Information Sciences, Faculty of Science, Kanagawa University | ||||||||
著者名 |
馬谷, 誠二
× 馬谷, 誠二
|
|||||||
著者名(英) |
Seiji, Umatani
× Seiji, Umatani
|
|||||||
論文抄録 | ||||||||
内容記述タイプ | Other | |||||||
内容記述 | Lisp系言語は,少数の特殊形式だけからなるコア言語と,その他多数の構文を実現するためのマクロから構成され,マクロを使用したコードも最終的には特殊形式だけからなるコードへと変換されてから評価される.そのため,原理的には,実行時の振舞いを解析するには特殊形式だけを対象にした解析手法を用いれば十分といえる.しかし,実行コードを生成するマクロ定義を解析できると,デバック時などソフトウェア開発段階において有用である.Scheme言語をベースとするLisp系言語の1つであるRacket言語では,コードに対する低レベルな操作をRacket自身で記述するsyntax-caseを使用できる.さらに,Racketには局所的マクロ展開,定義文脈といったマクロ展開処理をコントロールするための機能,syntax-introduceといったスコープ健全性を逸脱するための機能が追加されており,マクロ展開の実行モデルは特殊形式の評価モデルと比べかなり複雑なものとなっている.本発表では,マクロ定義にとっての操作対象データである構文オブジェクトを適切に抽象化することに加え,マクロ展開の実行モデルの内部構造を抽象化することにより,マクロ定義コードを含めた解析が可能な抽象解釈器の構築を試みる. | |||||||
論文抄録(英) | ||||||||
内容記述タイプ | Other | |||||||
内容記述 | A variant of Lisp languages is typically composed of a core language consisting of only a few special forms and macros for realizing many other constructs. A program using macros is eventually transformed into code consisting only of special forms before evaluation. Therefore, in principle, it is sufficient to use analysis methods that target only special forms to analyze its runtime behavior. However, it would be helpful in software development, such as debugging, if macro definitions that generate the executable code could be analyzed. The Racket language, a Lisp language based on the Scheme language, can use syntax-case to describe low-level code operations in Racket itself. In addition, Racket provides several constructs to control the macro expansion process, such as local macro expansion, definition context, and functions to deviate from scope hygiene, such as syntax-introduce. This makes the execution model of macro expansion much more complex than that of special-form evaluation models. In this presentation, we attempt to construct an abstract interpreter for analyzing Racket programs with macro definitions by appropriately abstracting the syntax objects that are manipulation targets of macro definitions and appropriately abstracting the execution model of macro expansion. | |||||||
書誌レコードID | ||||||||
収録物識別子タイプ | NCID | |||||||
収録物識別子 | AA11464814 | |||||||
書誌情報 |
情報処理学会論文誌プログラミング(PRO) 巻 15, 号 4, p. 1-1, 発行日 2022-09-15 |
|||||||
ISSN | ||||||||
収録物識別子タイプ | ISSN | |||||||
収録物識別子 | 1882-7802 | |||||||
出版者 | ||||||||
言語 | ja | |||||||
出版者 | 情報処理学会 |