トップ(最新)

nDiki : Scheme

Scheme

Gauche

R5RS 準拠の Scheme 処理系

スポンサード リンク

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日全て ]

2004年4月16日 (金)

新入社員 このエントリーを含むはてなブックマーク

[ お仕事 ]

先月中旬に面接したが今日から出社。 自分のプロジェクトへの配属となるので、オリエンテーションなどなど。

プログラミングの経験がほとんどないようなので、まずは研修といった感じか。 「実務に結びつく」「短期間に」「基礎から学べて」なんて考えると課題が決まらん。

最初はC言語でプログラムを書いてもらうか。業務では PerlJavaC++ といったところなのだが、どれも最初に覚えてもらうにはどうなのかなと。機械よりの概念もある程度おさえておいて欲しいし。早い段階でオブジェクト指向プログラミングも理解して欲しいが。

ML とか Lisp とか Scheme とかっていってみたいものではあるな。


[ 4月16日全て ]

2004年6月10日 (木)

過去の今ごろ このエントリーを含むはてなブックマーク

過去の6月10日より。

  • Gauche 0.7
    • まただ。いつも「今度は Scheme でも」と思うのだが、すぐやめてしまう。

[ 6月10日全て ]

2004年8月9日 (月)

Scheme でプログラムを書く このエントリーを含むはてなブックマーク

たまにやってくる「Scheme やるぞ熱」再来。

Gauche 0.8.1 をインストール。 何を書こうかという話になるが、今回はテスト駆動開発入門で「単体テストフレームワークテスト駆動開発で書いてみる」という例があり、新しい言語を学ぶときに良いとあったのでそれに挑戦してみることにした。 Gauche用の xUnit は既にあるようだが、トレーニングということで車輪の再発明。

フレームワーク部分を書いているのか、フレームワーク単体テストを書いているのか、単体テスト用サンプルオブジェクトを書いているのか、何だかわからなくなってくるな (オーバーラップするところもあるし)。

テスト駆動開発入門を参考にしようと思ったが、昨日会社に置いてきてしまったばかりだし。 明日続きをやるか。


[ 8月9日全て ]

2004年8月13日 (金)

PerlScheme実装 このエントリーを含むはてなブックマーク

最近ころころやる事が変わっているのだが気にしない。 どうせ Scheme をやるなら実装してみようかと。

とりあえず Perl で。パーサはParse::RecDescentで。 Parse::RecDescentを使うのは WiKicker のパーサの試作時以来で久しぶり。 R5RSの構文規則の一部を入力していろいろ実験。 再帰下降でうまく動くように、生成規則の順番を入れかえたりとか。 楽しい。


[ 8月13日全て ]

2004年8月16日 (月)

ぼちぼちと Scheme 処理系実装中 このエントリーを含むはてなブックマーク

書いてみていろいろ見えてくることが。

  • R5RS における syntax と procedure。program と datum。
  • 数の内部表現をどうするか。integer は Math::BigInt を使うとしよう。rational とかはどうしようか。

[ 8月16日全て ]

スポンサード リンク

■よく検索されるキーワード

提案書(75) torrent(69) perl(61) 書き方(45) 充電式カイロ(43) windows(38) x31(36) 使い方(32) linux(32) cvs(25) アジェンダとは(25) usb(25) thinkpad(23) 静電気(21) サンプル(20) 口コミ(20) ヨドバシ(20) アジェンダ(20) 画像(19) debian(19) ubuntu(19) mp980(18) f-01a(18) 手帳(17) tc-1(17) 秋葉原(16) ssh(16) subversion(16) グッズ(16) a6(15) 壁紙(15) ほぼ日手帳(15) c#(14) ダイソー(14) svn(14) 交換(14) インストール(13) 加湿器(13) firefox(12) ノート(12) 無印(12) 日本語(12) wiki(12) ganttproject(12) デロンギ(11) 方眼(11) ヨドバシカメラ(11) デザイン(11) nikkor(11) 設定(11) 作り方(11) dropbox(11) af(10) terastation(10) memcached(10) レビュー(10) カバー(10) カイロ(10) 2009(10) 除去(10) nikon(10) tortoisesvn(10) クラリチン(9) ガントチャート(9) 動画(9) ポメラ(9) ご査収(9) rcs(9) モジュール(9) n-01a(9) フィルム(9) 写真(9) システム手帳(9) edition(9) porter(9) xp(8) imap(8) 4c(8) docomo(8) ミニ6穴(8)

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

Process Time: 15.192689s / load averages: 0.27, 0.35, 0.40
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)