Presentation is loading. Please wait.

Presentation is loading. Please wait.

背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点

Similar presentations


Presentation on theme: "背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点"— Presentation transcript:

0 XMLによるJavaプログラム解析情報の データベース化
井上研究室 山中祐介

1 背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
解析情報がアプリケーション独自の形式であるため,他のアプリケーションとの情報共有が難しい 実行のたびにソースコードを再解析しなければならないため効率が悪い もっと詳細に書く.これでは現状が把握しきれない. 「解析情報」では曖昧すぎ.

2 目的 プログラム解析情報(意味解析木)のXMLデータベース化 データベース化による利点 XMLを用いる利点 解析情報の二次利用
解析コストの削減 XMLを用いる利点 解析情報をXMLで構造化できる XML文書を扱うための様々なアプリケーションが提供されている もっと詳細に書く. XMLを使うことをここで宣言しておく.その理由ももちろん添える. XMLを用いる利点を具体的に書く。

3 XML XML(eXtensible Markup Language)の特徴 XMLデータベースの利点 構文の容易性 タグ定義の自由性
DOM: XML文書を扱う共通API XSLT: XML文書の変換ルール XMLデータベースの利点 DTDによるデータの一貫性の保証 XML文書を容易に扱うことのできるDOM/XSLTの存在 次のスライドも含めて,記述内容の構造が不安定.スライドの構造に意味をきちんと持たせる. XMLの定義は「文書構造を記述するための言語」でいいの?(よく知らんから聞いてる) このあたりは事実を淡々と述べる部分なので,いい加減な本やwebページからパクるのだけは遠慮しておこう.信憑性のある文献(W3Cの文書等)から引用しといてね.

4 タグの例:<タグ名 属性= ”inf”>
意味解析木のXMLデータベース化 (1/2) 意味解析木 構文解析木に意味情報を加えたもの 変数/メソッド/型の宣言と参照の関係を保持 XMLタグ定義の方針 意味解析木の構造をタグ名で表現 プログラム情報や宣言,参照関係をタグの属性が保持 タグの種類は必要最小限にして構文を単純化 賢く見えるように書こう. タグの例:<タグ名 属性= ”inf”>

5 意味解析木のXMLデータベース化 (2/2) タグ名の例 属性の例 Method : メソッド宣言 Variable : 変数宣言
type : 型参照 属性の例 text : プログラムの内容(変数名や演算子など) id : クラスや変数などのID ref : ID参照 <Method text=“sample” id=“189b”> <type text="void" ref="4"/> <Block> <Variable text="a" id="18a9"> <type text="int" ref="7"/> <Literal text="1"/> </Variable> <Variable text=“b" id="18ab"> <variable text=“a“ ref="18a9"/> </Block> </Method> 1: void sample() { 2: int a = 1; 3: int b = a; 4: }

6 XMLデータベースの実現 意味解析木-XML変換ライブラリ 解析情報のXML化による応用アプリケーション
Javaプログラム解析フレームワークが扱う意味解析木 ,およびそのXML記述 を相互変換する 解析情報のXML化による応用アプリケーション XMLからソースプログラムに変換 XMLからHTMLに変換 XML編集 変数名の置換 ツールは大きく分けて,2つ(発表内容 参照).

7 Javaプログラム解析フレームワーク ソースプログラム 意味解析木 ユーザ XML文書 解析ライブラリ GUI 意味解析木-XML
class Sam{ } ソースプログラム 意味解析木 ユーザ 解析ライブラリ GUI XML <?xml…> <sample> </sample> XML文書 意味解析木-XML 変換ライブラリ

8 意味解析木-XML変換ライブラリ 開発言語:C++(libxml使用),約4000行 解析手順 意味解析木⇒XML XML⇒意味解析木
意味解析木をたどり各構文木要素に対応するタグを出力 XML⇒意味解析木 XML文書を解析してDOMツリーを構築 DOMツリーをたどり各タグに対応する構文木要素を作成 ツールは何を使って実現したとか,コード数がどれくらいとかもちゃんと書く.

9 XMLデータベースの検証 ファイルサイズ 解析時間(意味解析木構築まで) ソースプログラム 25MB XMLデータベース 62MB
対象:JDK1.3付属クラスライブラリ 解析時間(意味解析木構築まで) ソースプログラム 25MB XMLデータベース 62MB ソースプログラム 37秒 XMLデータベース 24秒

10 応用アプリケーション XML文書 ソースプログラム 意味解析木 ユーザ HTML文書 ソース変換 ブラウザ プログラム XML編集プログラム
<sample> </sample> XML文書 意味解析木-XML 変換ライブラリ Java class Sam{ } ソースプログラム 意味解析木 ユーザ 解析ライブラリ GUI ブラウザ ソース変換 プログラム HTML <html> <body> </body> </html> HTML文書 HTML変換 プログラム XML編集プログラム (変数名置換)

11 使用例(HTML変換) Sam5.html 例:Sam5.java class Sam5 {
例:Sam5.xml(一部抜粋) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Java SYSTEM "java.dtd"> <Java> <CompilationUnit> <ClassType modifiers="" text="Sam5" id="0x12"> <Method modifiers="public static" text="main" id="0x189b"> <type text="void" ref="0x4"/> <Variable modifiers="" text="args" id="0x18a4"> <type text="java.lang.String[]" text_="String[]" ref="0x20"/> </Variable> <Block> <Variable modifiers="" text="b" id="0x18ad"> <type text="int" ref="0x7"/> <Operation text="="> <variable text="b" ref="0x18ad"/> <Operation text="+"> <variable text="a" ref="0x18a9"/> <Literal text="1"/> </Operation> </Block> </Method> </ClassType> </CompilationUnit> </Java> 例:Sam5.java class Sam5 { public static void main(String args[]){ int a = 1; int b; b = a + 1; System.out.println(a + "," + b); } java/lang/System.html もっと例をひねったほうがいい. つまり,ストーリー立てをしてみるとか. アニメーション機能とかもあるので,活用すべし. ここで,いろんな機能をアピールする.

12 まとめと今後の課題 まとめ 今後の課題 XMLによるJavaプログラム解析情報のデータベース化 意味情報以外の解析情報のデータベース化
解析効率の向上 今後の課題 意味情報以外の解析情報のデータベース化 依存関係 エイリアス関係 ちゃんと書く.


Download ppt "背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点"

Similar presentations


Ads by Google