...

H22年度計画説明資料 - PHPから Rubyへの変換サービス

by user

on
Category: Documents
18

views

Report

Comments

Transcript

H22年度計画説明資料 - PHPから Rubyへの変換サービス
PHPからRubyへの変換ツール
の高度変換対応に関する研究開発
[ご説明資料]
平成22年6月22日
いずもトータルネット株式会社
Copyright© Izumo Total Net All Rights Reserved.
1
事業目的
① 背景と課題
◆ 背景
・プログラミング言語の中で、Rubyのシェアはまだまだ小さい。
・Ruby経験者が少ない。
・PHPで開発されたプログラム資産は多く存在する。
・島根県内の自治体でのシステム開発でRubyでの開発が条件に
なっている場合が多々ある。
『PHP⇒Ruby変換ツール』
◆ 現在の変換ツールの課題
PHPとRubyの構文が1対1で対応している部分に関しては
容易に変換ができるが、そうでない部分の変換には不便。
1
Copyright© Izumo Total Net All Rights Reserved.
1
事業目的
② 課題の解決
・1対1変換できない構文が存在する
例:switch文, 変数の初期化 …
→文脈を考慮した解析を行い既存の構文の組み合わせで対応
・型の不適合
例:Rubyでは数値型と文字列型を区別する
→型が推測できれば対応可能
・利用者独自の変換規則に対応できない
例:よく使用するPHP関数等
→トランスレータにユーザーインターフェイスを設ければ
対応可能
◆ 解決策
『PHP⇒Ruby変換ツール』の高度変換対応
2
Copyright© Izumo Total Net All Rights Reserved.
2
事業内容・規模
① 研究開発の要素
◎トランスレータを改良して、一旦PHPの抽象構文木を生成した後、
さらにRubyの中間表現を生成するプロセスを追加します。
構文定義
zend_language_parser.y
PHP
ソースコード
字句解析
構文解析
token_get_all
(標準関数)
パーサ
core.y
生成
PHP_ParserGenerator
(PEARライブラリより)
PHPの抽象構文木
静的コード解析
トランスレータ
Rubyの抽象構文木
ユーザーインターフェイス
機能の追加
変換
※太線部を開発
Ruby
ソースコード
3
Copyright© Izumo Total Net All Rights Reserved.
2
事業内容・規模
② 研究開発の説明
1)1対1変換できない部分についてプログラムの木構造を変化させる。
型の不適合の問題については型類推により改善する。
■変換処理のイメージ図
型類推
データフロー解析
依存解析
抽象構文木
抽象構文木
4
Copyright© Izumo Total Net All Rights Reserved.
2
事業内容・規模
2)ユーザーインターフェイスを設け、トランスレータの動作を
カスタマイズ可能にする。
■変換処理のイメージ図
ユーザー変換規則の追加
PHP Ruby
aaaa
⇒
bbbb
cccc
⇒ dddd
xxxx ⇒ yyyy
ユーザー
インターフェイス
PHP
ソースコード
-------xxxx
--------
Ruby
ソースコード
トランスレータ
5
-------yyyy
--------
Copyright© Izumo Total Net All Rights Reserved.
2
事業内容・規模
③ その他の研究開発
◆ PHP5.3で導入された新たな構文(名前空間等)への対応
◆ 頻出するPHP標準関数について、代替のRuby関数の整備
◆ プログラム構造以外の部分(コメント等)への対応
6
Copyright© Izumo Total Net All Rights Reserved.
4
波及効果
① 研究成果の展開
● 研究成果はインターネット上でOSSとして公開します。
『Rubyの普及』が図られる
② 研究成果公開後のメンテナンス・保守
● 研究成果は弊社に設置する公開サーバで管理します。
9
Copyright© Izumo Total Net All Rights Reserved.
資料
現行ツールでの変換例
PHP
抽象構文木
Ruby
変換ツール
資料−1
Copyright© Izumo Total Net All Rights Reserved.
資料
現行ツールでの変換例(制御構造)
PHP
Ruby
変換ツール
資料−2
Copyright© Izumo Total Net All Rights Reserved.
資料
現行ツールでの変換例(クラス)
PHP
Ruby
変換ツール
資料−3
Copyright© Izumo Total Net All Rights Reserved.
資料
現行ツールでの変換例(Smarty)
PHP
変換ツール
Ruby
資料−4
Copyright© Izumo Total Net All Rights Reserved.
Fly UP