nDiki : エクステンション
エクステンション - extension
スポンサード リンク
Related term
1999年1月20日 (水)
■ Perl で lex/yacc

最近 Perl で字句解析ルーチン生成系/構文解析ルーチン生成系を作ろうかな、などと考えている。 前にもやろうと思っていたのだが、なにもしていなかった。なぜ Perl でかというと、
- C/C++言語にはすでに存在する(flex/bison)。
- Perl にはいいものが存在しない(知らない)。
- flex/bison はC/C++のものしか生成できない。
- これは動的に生成し利用すること、また動的に変更することが考慮されていない。
- Perl なら実行時にサブルーチン定義したり eval できたりする。
- Perl なら気が楽。
などが理由であろうか。 また自分の研究で設計している言語を Scheme 上で実装しようかなと思っているが、その字句解析ルーチン生成系/構文解析ルーチン生成系が欲しい(あることにはあるが)。 一旦 Perl で生成系を自作しておけば、簡単に他の言語の解析ルーチンを生成できるように拡張できるであろう(と考えたい)。
動的な側面が念頭にあるのは、自分の研究がそういうことをやっているから。
とりあえず lex/yacc(flex/bison)互換/ライクなものを作る予定である。 これらはそれぞれ仕様記述のファイルを読み込んで解析ルーチン(解析用テーブル)を生成する。 ので、とうぜんこの仕様記述言語の字句解析ルーチン/構文解析ルーチンが必要である。 手で書いてもいいのだが、それも面倒だ。 当然字句解析ルーチン/構文解析ルーチン生成系が欲しい。 しかしまだない。 これから作ろうとしているものそのものだから。
方法としては、
- Perl で手書きで解析ルーチンを作る。それで Perl 用生成系の仕様記述を読ませて、置き換える。
- Perl の既存の生成系を使う。
- flex/bison を使って C/C++ 版を作成。その後その生成系で Perl 用生成系の仕様記述を読ませる。
などが考えられる。今回はとりあえず一番最後の方法をとろうと思う。 ただし実際には完全に C/C++ で作るのではなく、字句解析/構文解析ルーチンを flex/bison で生成し、それを Perlエクステンションとして、Perl から呼べるようにすることにする。こうしておけば、
とすることができる。最初のものを全部 C/C++ で書くと、解析ルーチン生成部を C/C++ と Perl で2回書かなければならないが、この方法ならその部分は Perl で書いておけるので2度手間にならないであろう。
ということ一昨日は flex のコードを眺めて、昨日は Perl エクステンションの書き方を調べてみている。 flex で吐いたファイルをそのまま Perl エクステンションのコードとは当然できないので、そのトランスレータをまず作ることする。
- 定型書式で内容を記述していくのに便利な形式は? (2005-11-21)
- 新入社員 (2004-04-16)
- MAILPIA による Twitter リプライチェック (2008-11-18)
- 過去の今ごろ (2004-05-07)
- ほぼ Perl 手帳 (2005-12-02)
Related web page
Mr Uptime どっかのニュースサイトで紹介されたサイトを見てみようと思ってクリックしてみると、そのサーバーが死んでたりレスポンスが返ってこない、なんてのは日常よくある話なんですが、そんな時に役に立つFirefoxの<strong>エクステンション</strong>です。 Mr Uptime is an extension to your Firefox browser that will keep trying to reach that website in the background while you continue surfing on other websites. When the website is accehttp://www.aivy.co.jp/BLOG_TEST/nagasawa/a/archives/2007/08/firefox_6.html
Mozex の新しい版http://kengo.preston-net.com/archives/002677.shtml
Lucky bag::blogで紹介されていたScreen grab!はJavaを利用してページ全体のスクリーンショットをとってくれる<strong>エクステンション</strong>です。Blogのように縦に長いページはページ全体のスクリーンショットを取ろうとするとつないだりしないといけなかったりしますが、これなら右クリックで簡単にスクリーンショットを取ることができます。pngファイルになります。 実際にGoing My Wayのトップhttp://kengo.preston-net.com/archives/002152.shtml
自分のWeblogでの原稿を書く際や、Wikiに情報を追加する場合、友人のWeblogにコメントをつける際にテキストエリアが小さい時などはありませんか?特にはてなダイヤリーユーザーのサイトにコメントつける際はコメント欄が小さいのでスクロールしたりするのが面倒と感じることもあるかもしれません。 そんな際に、自由自在にテキストエリアの大きさのそのつど変更することがでhttp://kengo.preston-net.com/archives/001922.shtml#001922
JUnitを使うと、目的とする要求に合致しているというアサーション(assertions)を行うことでソフトウェアのコード・ユニットをテストできるようになりますが、こうしたアサーションは初歩的な操作用に限られています。この記事では、IBMのソフトウェア技術者のTony MorrisがJUnit用のJUnitX(Assertion Extensions for JUnit)を導入して、その隙間を埋めます。JUnitXは、JUnitフレームワーク内http://www-6.ibm.com/jp/developerworks/java/050318/j_j-unitx.html
■よく検索されるキーワード
提案書(65) perl(54) 書き方(49) torrent(49) linux(40) debian(35) アジェンダ(33) 使い方(31) windows(31) x31(30) svn(26) ssh(25) tc-1(25) サンプル(23) usb(22) java(22) ganttproject(21) mp980(20) 画像(20) tortoisesvn(20) インストール(19) 手帳(19) cvs(19) 壁紙(19) a6(18) thinkpad(17) subversion(16) 石垣祐馬(16) ほぼ日手帳(16) 作り方(16) 修理(16) 動画(15) 日本語(15) 充電式カイロ(15) ノート(14) ダイソー(14) 方眼(14) ヨドバシ(14) リフィル(13) 秋葉原(12) ダウンロード(12) apache(12) アジェンダとは(12) iwgp(12) 設定(12) c#(11) mp3(11) ヨドバシカメラ(11) テンプレート(11) 無線lan(11) ubuntu(11) nikon(11) dropbox(11) システム手帳(11) porter(11) クラリチン(10) 筆まめ(10) centos(10) ヤマダ電機(10) window(10) ポメラ(9) フリー(9) リポジトリ(9) イメージテック(9) wiki(9) flex(9) xampp(9) フォーマット(9) terastation(8) flash(8) gmail(8) ドラマ(8) proxy(8) rcs(8) 無料(8) 温度計(8) トランサミン(8) constant(8) truecrypt(8) google(8)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 0.213979s / load averages: 0.06, 0.12, 0.16
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク