nDiki : 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 エクステンションのコードとは当然できないので、そのトランスレータをまず作ることする。
- Twitter ベイジアンフィルタプロキシ (2007-12-29)
- PerlでScheme実装 (2004-08-13)
- 久しぶりの C++ は GNU Automake + CppUnit で (2009-03-13)
- ハッシュとは (2004-06-09)
- 新入社員 (2004-04-16)
2004年4月16日 (金)
■ 新入社員

[ お仕事 ]
先月中旬に面接した人が今日から出社。 自分のプロジェクトへの配属となるので、オリエンテーションなどなど。
プログラミングの経験がほとんどないようなので、まずは研修といった感じか。 「実務に結びつく」「短期間に」「基礎から学べて」なんて考えると課題が決まらん。
最初はC言語でプログラムを書いてもらうか。業務では Perl か Java か C++ といったところなのだが、どれも最初に覚えてもらうにはどうなのかなと。機械よりの概念もある程度おさえておいて欲しいし。早い段階でオブジェクト指向プログラミングも理解して欲しいが。
ML とか Lisp とか Scheme とかっていってみたいものではあるな。
- assertion (2004-05-16)
- 久しぶりの C++ は GNU Automake + CppUnit で (2009-03-13)
- Perl で lex/yacc (1999-01-20)
- ハッシュとは (2004-06-09)
- アクセサは foo と set_foo にしたい (2009-08-20)
2004年6月10日 (木)
■ 過去の今ごろ

過去の6月10日より。
- Gauche 0.7
- まただ。いつも「今度は Scheme でも」と思うのだが、すぐやめてしまう。
- Perl で lex/yacc (1999-01-20)
- PerlでScheme実装 (2004-08-13)
- Scheme でプログラムを書く (2004-08-09)
- ぼちぼちと Scheme 処理系実装中 (2004-08-16)
- 新入社員 (2004-04-16)
2004年8月9日 (月)
■ Scheme でプログラムを書く

たまにやってくる「Scheme やるぞ熱」再来。
Gauche 0.8.1 をインストール。 何を書こうかという話になるが、今回はテスト駆動開発入門で「単体テストフレームワークをテスト駆動開発で書いてみる」という例があり、新しい言語を学ぶときに良いとあったのでそれに挑戦してみることにした。 Gauche用の xUnit は既にあるようだが、トレーニングということで車輪の再発明。
フレームワーク部分を書いているのか、フレームワークの単体テストを書いているのか、単体テスト用サンプルオブジェクトを書いているのか、何だかわからなくなってくるな (オーバーラップするところもあるし)。
テスト駆動開発入門を参考にしようと思ったが、昨日会社に置いてきてしまったばかりだし。 明日続きをやるか。
- テスト駆動開発入門 (2004-08-02)
- テスト駆動開発入門読了 (2004-08-05)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
- 今日のさえずり - バーコードって床屋でどのように頼むんだろう (2009-09-10)
- [ Perl ] PDL 2.4.1 から eigens が固有ベクトルを... (2004-03-05)
2004年8月13日 (金)
■ PerlでScheme実装

最近ころころやる事が変わっているのだが気にしない。 どうせ Scheme をやるなら実装してみようかと。
とりあえず Perl で。パーサはParse::RecDescentで。 Parse::RecDescentを使うのは WiKicker のパーサの試作時以来で久しぶり。 R5RSの構文規則の一部を入力していろいろ実験。 再帰下降でうまく動くように、生成規則の順番を入れかえたりとか。 楽しい。
- [ WiKicker ] 「最近のアクセスログ」処理思案 (2004-01-17)
- [ WiKicker ] 通知メールの Subject: フィールドのエン... (2004-01-25)
- [ WiKicker ] RCSファイルのリビジョン間引き (2004-04-04)
- Perl で lex/yacc (1999-01-20)
- [ DiKicker ] Term DB の改良 (2004-06-12)
2004年8月16日 (月)
■ ぼちぼちと Scheme 処理系実装中

書いてみていろいろ見えてくることが。
- R5RS における syntax と procedure。program と datum。
- 数の内部表現をどうするか。integer は Math::BigInt を使うとしよう。rational とかはどうしようか。
- PerlでScheme実装 (2004-08-13)
- Perl で lex/yacc (1999-01-20)
- そうか、備忘録ファイルがあればいいのか (2006-03-30)
- [ DiKicker ] 実装作業 (2004-02-21)
- Wiki に ReferenceCountPage を実装。 (2002-10-22)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.08489s / load averages: 0.13, 0.22, 0.19
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)




twitter.com/Naney の follower になってください。