...

JSSST-25alt.key

by user

on
Category: Documents
4

views

Report

Comments

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
Fly UP