caper
caperの新バージョンをアップロードしました。 Makefile、VC++のプロジェクトを微修正して 若干コンパイルしやすくしました。 あとおまけで'leaf'(LLVM用修作コンパイラ)を追加しました。 caper, capellaのサンプルにもなっています。 まだ全然見所のない言…
Makefileとかおかしいのでレポジトリの方を多少修正。 まだおかしい気がするけど
caperをupdateしました。 細かいバグフィックスと capella(AST作成ツール)の追加です。 capellaのデキはまあまだ全然ナニですが、 一応LLVMでのプログラミングには使えているので 自分でソース書き換える覚悟で 適当にアレしてください。 AST以外にもtypesaf…
caperのバージョンアップをしました。 C#版の出力コードを変更しました。インターフェイスが変わっています。thx for colilicaさん
gccの方がtypenameまわり厳しいっすね。 直しておきました。
再びcaperのバージョンアップを行いました。http://tinyurl.com/yefoxa主にBUGFIXです。 例によって動かなかったらごめんなさい。 ルートから連結していないルールが存在していたときに強制終了していたのを修正。 %access_modifer ;宣言を追加。C#ジェネレ…
超久々ですがcaperバージョンアップしました。 http://tinyurl.com/yefoxa id:ytqwertyさんの書いてくださったDジェネレータと colilicaさんの書いてくださったC#ジェネレータを追加しました。 undocumentedですが。 どちらも普段使わない言語で、 一応実行…
Honalee LR(k)のアルゴリズムを LR(1)で実装してみた。なんか普通に動いています。
高速版のリリースを行いました。 つってもまあ、まだ自分自身の文法とサンプルくらいしか試してないですが。
LALR(2)と書くと先読み2つみたいですが、続き番号のつもりです。 んで、高速版LALRのブートストラップに成功しました。 サンプルも動いてます。 明日あたりリリースの予定。
やっと高速版LALRアルゴリズム実装完了 これからテストします。あとネットでみつけたHonalee LR(1)アルゴリズムというのも実装してみた。 でもサンプルですこしおかしいところがあったのでちょっと冷凍中。うまくいけばcaperはLR(1)パーサ(LALR(1)よりえらい…
大きめの文法を作ってみた。……意外とすぐ爆発するのね…… 実質的な文法が100行くらいいくとちょっと厳しくなってくるみたい。 アルゴリズムをimproveするか。
木構造作成ツールはできたんですが、どうやって配布しようか考え中です。 ビルドにcaperが必要だし、caperのおまけが妥当かな。
ソースを分けたりJavaScriptパーサ出力をつけたりしました。 JavaScript版のマニュアルはついてませんが、 まあ類推でわかるかなと思います。
調べてみたが…… できることはできるが、ひどいなコレw やる気なくした。まあ、用途からいって、パースのような処理はサーバサイドの ほうが需要がありそうだから(JavaScriptの場合基本的にJSONで満足みたいだし)、 そのうち気が向いたら普通のテーブル駆動で…
Ajaxとかはやってるから…… という軟弱な理由で JavaScript対応に挑戦してみました。手元でやってみたところ、なんか動いてる気がします。 普段JavaScriptを使わないので「効率ってなんですか?」状態ですが。 次のリリースで含めてみようと思います。大体3時…
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さ…
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…
トラックバックを打った(というかなってしまった)ytqwertyさんに遊んでいただけたようです。 ありがとうございます。...む、ランタイムが必要な状態になっていたのか。修正せねば。...variant? 本体で使ってたっけ? む、なんだこれは。使ってないのにインク…
conflictの結果がbisonと違うので調べてみたら、 なんだかどちらとも言えるような気がしたので、 yaccでも調べてみた。すると、linux(fedora core 3)に元から入っているyaccとbisonで 結果が違うことに気づいてしまった。文法: sequence: /* 空 */ { printf …
FUTURE WORKSのところには「GLRは難しそうだ」などと書いたわけではありますが、WikipediaのGLRの説明やBisonのGLRの説明を見ると、「caperの場合、コンフリクトするところでパーサのインスタンスを複製して、後続トークンを複製全部に与えるようにするだけ…
「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ありでも…
パーサの仕事は八割がた構文木を作ることであろうと思うわけなので、caperにも構文木を作る機能をつけようかな、なんて思ったり思わなかったりするわけですが、C++の場合は構文木を作るといっても一意でない(いろいろなやり方が考えられる)し、せっかくtempl…
はい、今日から日記更新開始です。テキストエディタを作り始める→ 結構できてきたので、スクリプトを搭載しよう→ spidermonkeyとかsquirrelとかいろいろ試す→ イマイチ満足いかない→ 昔作ったschemeインタプリタを使おうかとも思うが、いまさらschemeもなァ→…
このエントリのコメント欄をcaperのサポート用エントリにします。 BBS代わりにしてください。