2006-10-01から1ヶ月間の記事一覧

Honalee LR(k) Algorithm

Honalee LR(k)のアルゴリズムを LR(1)で実装してみた。なんか普通に動いています。

リリース

高速版のリリースを行いました。 つってもまあ、まだ自分自身の文法とサンプルくらいしか試してないですが。

高速版LALR(2)

LALR(2)と書くと先読み2つみたいですが、続き番号のつもりです。 んで、高速版LALRのブートストラップに成功しました。 サンプルも動いてます。 明日あたりリリースの予定。

高速版LALR(1)

やっと高速版LALRアルゴリズム実装完了 これからテストします。あとネットでみつけたHonalee LR(1)アルゴリズムというのも実装してみた。 でもサンプルですこしおかしいところがあったのでちょっと冷凍中。うまくいけばcaperはLR(1)パーサ(LALR(1)よりえらい…

爆発

大きめの文法を作ってみた。……意外とすぐ爆発するのね…… 実質的な文法が100行くらいいくとちょっと厳しくなってくるみたい。 アルゴリズムをimproveするか。

Nemerle...

今日初めてNemerleという言語を知った。 私の作ろうとしてる言語、そっくりじゃん……モチベーション激しく低下ああ.Net用か、では割り切って方言のつもりで作るか……

近況報告

木構造作成ツールはできたんですが、どうやって配布しようか考え中です。 ビルドにcaperが必要だし、caperのおまけが妥当かな。

更新

ソースを分けたりJavaScriptパーサ出力をつけたりしました。 JavaScript版のマニュアルはついてませんが、 まあ類推でわかるかなと思います。

PHP...

調べてみたが…… できることはできるが、ひどいなコレw やる気なくした。まあ、用途からいって、パースのような処理はサーバサイドの ほうが需要がありそうだから(JavaScriptの場合基本的にJSONで満足みたいだし)、 そのうち気が向いたら普通のテーブル駆動で…

JavaScript対応

Ajaxとかはやってるから…… という軟弱な理由で JavaScript対応に挑戦してみました。手元でやってみたところ、なんか動いてる気がします。 普段JavaScriptを使わないので「効率ってなんですか?」状態ですが。 次のリリースで含めてみようと思います。大体3時…

AST生成

AST生成プログラム、ちょっとやってみたんですが…… atom = Identifier; type Module = Declarations; type Declarations = Delclaration*; type Declaration = AtomDef | TypeDef; type AtomDef = Atoms; type Atoms = Identifier*; type TypeDef = Identifi…

修正

10-19-1版をリリースしました。 同じ内容の規則があるとエラーにするようにした。 ルートからつながってない規則があるとエラーにするようにした。 BC++に対応したつもり。 exeファイルがランタイムを必要としていたのを修正。 BC++について 一応ytqwertyさ…

GLR(2)

Elkhoundのpaperが一番参考になりそうだった。 Bison allows user-specified actions, and recent versions of Bison include an extended parser that emulates GLR by copying the stack instead of building graph, and executing user actions by traver…

variant

トラックバックを打った(というかなってしまった)ytqwertyさんに遊んでいただけたようです。 ありがとうございます。...む、ランタイムが必要な状態になっていたのか。修正せねば。...variant? 本体で使ってたっけ? む、なんだこれは。使ってないのにインク…

conflict

conflictの結果がbisonと違うので調べてみたら、 なんだかどちらとも言えるような気がしたので、 yaccでも調べてみた。すると、linux(fedora core 3)に元から入っているyaccとbisonで 結果が違うことに気づいてしまった。文法: sequence: /* 空 */ { printf …

GLR

FUTURE WORKSのところには「GLRは難しそうだ」などと書いたわけではありますが、WikipediaのGLRの説明やBisonのGLRの説明を見ると、「caperの場合、コンフリクトするところでパーサのインスタンスを複製して、後続トークンを複製全部に与えるようにするだけ…

conflict

「conflictは必ず解決してください」などと書いておきながら、conflictを出力していなかったひどいバグを修正したので再うp。 conflictのwarningは微妙に内部表現でわかりにくなってますが、雰囲気は伝わるかなと。 それとshift/reduce衝突時にはshiftを優…

過去にかなり似たようなこと考えてた人がいた!

D言語だけど: http://d.hatena.ne.jp/ytqwerty/20050425まあ自分の考えはそう特異なものではないということだろう、と前向きに解釈。

スタックオーバーフロー

今まで %dont_use_stl; だとスタックオーバーフロー時に assert(0); していたので、それはまずかろうということで対処しました。 SemanticAction で定義しなければいけない関数がひとつ増えてしまいましたが( void stack_overflow(); )。ついでにSTLありでも…

AST

パーサの仕事は八割がた構文木を作ることであろうと思うわけなので、caperにも構文木を作る機能をつけようかな、なんて思ったり思わなかったりするわけですが、C++の場合は構文木を作るといっても一意でない(いろいろなやり方が考えられる)し、せっかくtempl…

注目中のもの

xtal んでもって現在私が注目しているのはこの方の日記です。xtalの仕様を見ると、「1ヶ月早く知っていればわざわざ自分でコンパイラなんぞ作らなかったのになァ」という、よい感じのバランスになっているようです。とはいえもう自分のコンパイラもだいぶ作…

caper

はい、今日から日記更新開始です。テキストエディタを作り始める→ 結構できてきたので、スクリプトを搭載しよう→ spidermonkeyとかsquirrelとかいろいろ試す→ イマイチ満足いかない→ 昔作ったschemeインタプリタを使おうかとも思うが、いまさらschemeもなァ→…