Comments
Description
Transcript
JSSST-25alt.key
あらまし XMLで記述されたスクリプト言語 ScriptXML • はじめに • ScriptXML • 設計方針 • 実装方針 • まとめと今後の課題 ScriptXML̶A Script Language Written in XML 林 恒俊 Tsunetoshi HAYASHI 立命館大学情報理工学部メディア情報学科 1 はじめに 2 ScriptXML • プログラムの記述 • プログラムの内部構造 • より適切な記述法を考える • 処理系の主要部分は不要 • ScriptXML と仮称する • 基本原理 • プログラミング言語の定義 • プログラムの記述 • プログラムの構造・構成 • プログラムの構造を指向した記述 • XMLによるプログラム記述 3 4 ScriptXMLの原理 プログラム指向記述 • プログラミング言語の定義法は伝統的に • 階層構造を直接記述するプログラミング • 必然的にプログラムは階層(入れ子)構 • 言語処理系に字句処理や構文解析が不要 [拡張] BNF (文脈自由文法) 言語の場合 造をもつ で、いきなりプログラム木が作成可能 • しかし、プログラムはテキストデータで • 木走査ライブラリがあれば解釈は容易 • プログラム作成編集に構造指向型編集系 記述される • 故に、プログラム記述には構造が反映さ れない が必要 5 6 階層記述法 XMLの理由 • つぎのような階層指向記述が存在する - Abstract Syntax Notation One • XML を読込むライブラリが存在する • 木構造を取扱う手法が確立されている--- - eXtensible Markup Language • とりあえず - Vienna Definition Language • プログラム記述とデータ領域が重複して Document Object Model (DOM) (ASN.1) also known as X409 Javascript を利用して処理 系をブートストラップできる (XML) いるため自分自身を書換えることができ る • ここでは XML を考える 7 ScriptXML の由来 • HyperPage • する 8 ScriptXML の設計 向きスクリプト言語を構築 • プログラム言語としては 同等の能力を要求する XML と適合するスクリプト言語記述法 Javascript と • タグにプログラム構造を反映する • できるだけ多様なタグ種を用意する • 属性値は活用しない <script type=”text/javascript” language=”Javascript”> // <![CDATA[ // here goes any Javascript code // ]]> </script> • これはどうみても kludge • XML でスクリプトを記述すれば無問題 9 10 木構造の直接表示 タグとプログラム構造 • プログラム木を直接表現する(言語処理 • タグはプログラム構造の階層に従って用 意される 系の内部表現) タグ 説明 <node>...</node> 木構造体 <op>...</op> 演算子 <left>...</left> 左枝 <right>...</right> 右枝 - 11 モジュール・ファイル 関数・クラス 制御構造 文 式 変数 12 簡単な言語仕様 (1) 簡単な言語仕様 (2) • モジュール・ファイル--プログラム単位 • 制御構造--文列、条件文、繰返し文、多 • 関数・クラス--関数あるいはクラスを定 • 実行文--代入文、呼出し文、復帰終了 • 変数と宣言--変数は型がない、宣言文で • 式と演算子--代入、四則演算、比較論理 を規定する 分岐選択 義する 文、中断文、割込み文 初期値を与えてもよい 演算、要素選択、関数呼出し 13 ScriptXML の例 14 ファイル・モジュール <scriptxml> <function> <name>helloworld</name> <block> <call> <name>alert</name> <param> <const>”Hello World”</const> </param> </call> </block> </function> </scriptxml> <scriptxml> ... </scriptxml> 15 関数・クラス 16 変数宣言 <function> <name> ... </name> <param> ... </param> <vars> ... </vars> <block> ... </block> </function> <name> ... </name> [<array> ... </array>] [<expression> ... </expresion>] <class> <name> ... </name> <vars> .... </vars> <function> ... </function> </class> 17 18 制御構造 実行文 <assign> <target> ... </target> <expression> ... </expression> </assign> <if> <cond> ... </cond> <then> ... </then> [<else> ... </else>] </if> <break> ... </break> <do> <return> ... </return> <cond> ... </cond> <block> ... </block> </do> <on> ... </on> <call> <name> ... </name> {<param> ... </param>} </call> 19 20 式と演算子 実装方針 • ブラウザと XML についての考察から次 のように実装が可能である • XML は既に実績のあるフレームワーク がブラウザに組込まれている • とりあえずブラウザ上で Javascript を <expression> <op> ... </op> <expression> ... </expression> <expression> ... </expression> </expression> <name> ... </name> [<array> ... </array]> <const> ... </const> • 利用してインタプリタの実現が可能であ る 将来は Webkit のようなフレームワーク を利用する 21 22 ScriptXML の実装 ScriptXML の編集 自身は XML なので任意の • ScriptXML テキストエディタで作成編集が可能であ • 処理系の実装は通常の言語に比して容易 • XMLを解析し格納するためにはブラウ ザで間に合う (XMLHttpRequest) • • • • • XML は DOM として参照されるので DOM 走査ライブラリを使えばインタプ リタが実装できる • 高速化を狙わなければ RPN 生成技法と ほとんど同じである 23 る 通常のプログラム言語よりも可読性は悪 い 可読性はXHTML と同等 ScriptXML 専用編集プログラムを作成 する 可視的編集プログラムを ScriptXML 自 身で作成することが可能 24 可視化編集 まとめと今後の課題 • 木構造を直接表示する • 表示上でノードの追加、削除、変更など • XML で記述される言語 ScriptXML に ついて報告した • 現在 ScriptXML は設計段階 • 多様な要素を検討中で設計は変更される の編集を行う • GUI に基づいた編集系 • 式表示にはデータフロー型表示が適切か かもしれない • 形式的定義を目指して もしれない する予定 25 参考文献 • • W3C, Extensible Markup Language 1.1 (2006) • • http://webkit.org/ 林, オブジェクト指向に基づくドキュメント創成プロ グラム, JSSST-21 (2004) D Flanagan, Javascript, O Reilly (2006) 27 DTD を近々作成 26