TEBA の最新版のパッケージは次のページからダウンロードできる。
インストール方法等は「TEBA の使い方」を参考にすること。
TEBA が提供するコマンドやプログラムの書換えパターンの記述方法など、 TEBA について様々な説明が書かれている。
TEBA を用いたプログラム解析のサンプルである。
TEBA を用いてプログラム書換えを実現する方法を学ぶための演習資料である。
TEBA のコード検索ツール preg.pl の簡単な使い方を学ぶための演習資料である。
詳細は後述。
RewriteTokens2 は TEBA の基本モジュール RewriteTokens を再設計したものである。 従来の RewriteTokens とは適合時の戦略と記法が一部異なるが、 これまでの経験に基づいて再設計しており、書換え規則を書きやすくしている。 なお、現在、開発中であり、RewriteTokens の機能で実装されていないものがある。 (卒業研究などで、未実装な機能が必要な場合には、相談してください。)
構文解析の実現を行いながら、RewriteTokens2 の使い方を学ぶための資料である。 以下は、この演習での変換の例を示すデモである。
なお、これらのデモでは GraphViz を
JavaScript 上で使用して図を生成している (d3-graphviz)。
画面の左側の字句列を編集したり、他の字句列と入れ替えて、[reload]
ボタンを押すと、
構文木が更新される。よって、演習課題での変換結果を構文木にして確認したときは、
このデモの機能を利用するとよい。
吉田敦, 蜂巣吉成, 「プログラム解析ツール開発支援のための属性付き字句列に基づく構文木の構成と表現形式」, アカデミア 理工学編, 南山大学紀要, Vol.22, pp.178–187, Mar. 2022. [論文]
吉田敦, 加藤大貴,蜂巣吉成, 桑原寛明,阿草清滋, 「字句列の共通性に基づく例外処理条件文の抽出手法の提案」, 「ソフトウェアエンジニアリングシンポジウム2018論文集, 情報処理学会シンポジウムシリーズ, Vol.2018, pp.15-23, 情報処理学会, SES2018, Aug. 2018. (最優秀論文賞受賞) [論文]
同じような書き方をしている条件文は例外処理という前提のもと、 if文の構文木から n-gram を求めて、類似した条件文を探している。 それを別の手段で見つけた例外処理と比較し、高い精度で求まることを示している。
吉田敦, 蜂巣吉成, 阿草清滋, 「ウェブアプリケーション開発のためのPHP オンライン部分評価器の試作」, ソフトウェア工学の基礎XXIII – 日本ソフトウェア科学会, 近代科学社, FOSE 2016, pp.217-222(6ページ), Dec. 2016. [論文]
TEBA を利用して、PHP のオンライン部分評価器を作成した。 PHP のソースコードを、具体的な定数値に基づいて簡略化できるので、 理解支援に使える。 TEBA の phparse.pl は、この実験のために作った PHP の構文解析器である。
吉田敦, 蜂巣吉成, 「前処理指令に対する制約のない前処理前コードの構文解析手法」, 情報処理学会論文誌, Vol.56, No.2, pp.593-610, Feb. 2015. [論文]
TEBA は、前処理前のソースコードを解析できるようにしているが、 そのための方法を説明している。
Atsushi Yoshida, Hachisu Yoshinari, “A Pattern Search Method for Unpreprocessed C Programs Based on Tokenized Syntax Trees”, Proc. of 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation, SCAM2014, pp.295–304, Sep. 2014. [論文]
TEBA を使って、前処理前のソースコードに対してパターン検索ができることを示している。 このときに作成したツールが preg.pl である。
前林達也, 吉田敦, 蜂巣吉成, 張漢明, 野呂昌満, 「前処理プログラムに対する記号表の構成手法」, 情報処理学会論文誌, Vol.54, No.2, pp.912-921, 2013. [論文]
TEBA は、記号表を作らずに構文解析をしている。 しかし、記号表がないと型の情報などが得られず、プログラム理解支援への応用が限られる。 前処理前のプログラムは、必ずしも記号表に必要な情報が揃わないが、 その中でどのように記号表を作成すればよいかを述べている。 この経験を踏まえて、cparse.pl が生成する JSON 形式の構文木には記号表が生成されている。 (ただし、この論文の手法そのものを実装したものではない)
吉田敦, 蜂巣吉成, 沢田篤史, 張漢明, 野呂昌満, 「属性付き字句系列に基づくソースコード書換え支援環境」, 情報処理学会論文誌, Vol.53, No.7, pp.1832-1849, 2012. [論文]
最初の TEBA の論文である。構文木を字句系列で表現すれば、 パターン変換が実現できると述べた論文である。
以下は、TEBA そのものの資料ではないが、 TEBA のインストールなども含めてエンジニアとして必要となる知識や プログラミングに関する知識を学ぶ材料である。
“The Missing Semester of Your CS Education”, MIT
MIT のプログラミング環境に関する講義である。授業では学ばないが、本来、 学生が身につけておくべき知識を学ぶものである。日本語訳も提供されている。 教員は、これらを知っているという前提で話をすることが多い。 TEBA のインストールの説明が不親切なのは、これが原因である(ごめんなさい)。
ハーバード大学の講義 CS50 の日本語訳である。 コンピュータサイエンス(CS)の授業であり、 プログラミングに関する基礎知識がまとまっている。
米国在住の有名なIT系エンジニアのポッドキャストである。 IT業界で活躍しているエンジニアをゲストに迎え、 ゲストとIT系の様々な話題を楽しく話をしており、世の中を知るうえで役に立つ。 会話は基本的に日本語である。 (まれに、台湾のオードリーターン氏など、海外のエンジニアがゲストになることもあり、 そのときは英語である。)
“Interpretable Machine Learning” (日本語翻訳)
機械学習について学ぶための教科書である。無料で読める。
「完全初心者のためのプログラミング入門 – JavaScript で UFOゲームを作る –」
前橋和弥氏によるプログラミングの学習教材である。 前橋氏の著書「C言語 ポインタ完全制覇」は非常に有名で、中国でも翻訳版が出版されている。 なお、彼の著書の多くは、ウェブで公開していた資料が元になっている。 この資料も、いずれ出版ということになれば消える可能性があるので、 読むのであれば今のうちである。 また、彼は吉田の後輩であり、 彼の本の中には吉田の名前も出てくることがある(その理由は秘密)。