2009-02-26から1日間の記事一覧
module宣言を使ったとき、たとえば、 module foo.bar; class A { @b: B; } class B {}みたいなときに、@b: BのB型が見つからないというコンパイルエラーが出ていたのを修正。Onionを自分でもっとまともに使ってたらとっくに気付いてたバグだなあ。module宣言…
【急募】PEGパーサのメモ化の実装 http://twitter.com/anatoo/status/1253132392 とかあったんで、せっかくなのでサクっと実装してみた。 ポイントは、PEGパーサコンビネータでは、ParserがString => Option[(A, String)]を継承していたのを、Int => Option[…
せっかくなので、OnionでもPEGパーザコンビネータ書いてみた。しかし、自分で作った言語なのに、文法忘れてて文法定義ファイル見直してみたり、コンパイラが例外吐いて落ちたりして、コンパイラの不具合を避けてプログラムを書くために頭を悩ませるはめに…。…
調子に乗ってRubyでもPEGパーザコンビネータ書いてみた。Rubyは素人(コード自動生成とかにしか使ってない)なので、もうちょっとこうした方がいいよ、とか、こうした方がRubyっぽいよ、とかあったら教えてください。 module PEGParserCombinator class Parser…
といっても、昨日Javaで作ったPEGパーザコンビネータライブラリをScalaで書き直しただけのものだけど。Java版に比べて、1/3くらいの行数になっている。 object PEGParserCombinator { abstract class Parser[+A] extends (String => Option[(A, String)]) { …
abstract classでabstractなメソッド宣言があったとき、例えば、 abstract class A { public: def foo; }のとき、コンパイラがNullPointerExceptionを吐いて落ちていた問題を修正. (interfaceのメソッド宣言では起きていない)。クラスのabstractなメソッドに…