トップ(最新)

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 エクステンションのコードとは当然できないので、そのトランスレータをまず作ることする。

スポンサード リンク


[ 1月20日全て ]

Related web page

Modern Syntax : アクセスできなかったサイトを後からみれるようにするFirefoxのエクステンション
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 acce
http://www.aivy.co.jp/BLOG_TEST/nagasawa/a/archives/2007/08/firefox_6.html
Going My Way: Hotkeyを利用してTextareaを外部エディターで開くFirefox用エクステンション Mozex 1.93
Mozex の新しい版
http://kengo.preston-net.com/archives/002677.shtml
Going My Way: 縦長のページのスクリーンキャプチャーなどが手軽にできるFirefox用エクステンション Screen grab!
Lucky bag::blogで紹介されていたScreen grab!はJavaを利用してページ全体のスクリーンショットをとってくれる<strong>エクステンション</strong>です。Blogのように縦に長いページはページ全体のスクリーンショットを取ろうとするとつないだりしないといけなかったりしますが、これなら右クリックで簡単にスクリーンショットを取ることができます。pngファイルになります。 実際にGoing My Wayのトップ
http://kengo.preston-net.com/archives/002152.shtml
Going My Way: テキストエリアの大きさを自在に変更可能なFirefox用エクステンション Resizable Textarea
自分のWeblogでの原稿を書く際や、Wikiに情報を追加する場合、友人のWeblogにコメントをつける際にテキストエリアが小さい時などはありませんか?特にはてなダイヤリーユーザーのサイトにコメントつける際はコメント欄が小さいのでスクロールしたりするのが面倒と感じることもあるかもしれません。 そんな際に、自由自在にテキストエリアの大きさのそのつど変更することがで
http://kengo.preston-net.com/archives/001922.shtml#001922
IBM dW : Java technology : JUnit用アサーション・エクステンション - Japan
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)

この日記のはてなブックマーク数 Add to Google RSS

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)