ParsingExpressionGrammer を試す
いつしか作ろうと思って放置していたオレオレ記法のパーサーを作るために、Rui:ParsingExpressionGrammarを試す。
いろいろ試しているけど、すぐにループに陥ってしまったり、思いどおりの文字列を掴まえられなかったり。EBNFも構文解析もまともに勉強したことないから、そこらへんの基礎知識をつけたほうがいいのかなぁ。あとは、ドキュメントが見あたらないので使いこなすためにはソースを読まないと。
$char, $string
char, string からパーサ(クロージャ)を生成するだけ。
$many
($many <exp>)
で
$manyを使うとよく無限ループになる。
$do
捉えた文字列そのものではなく、それを加工したり別のものに置き換えたりするときに使う?
; hogehoge -> hagehage gosh> (parse-string ($many ($do (txt ($string "hoge")) ($return "hage"))) "hogehoge") (#0="hage" #0#)