SchemeのS式正規表現は良いぞ(本当はClojureに移植した話をするつもりだった)Niyarin
View Slide
SREとは・正規表現をS式で表現したもの[ABC]+[0-9]{0,3}.?`(: (+ ,char-set:ABC)(repeated 0 3 num)(? any))1
・SRFI115 あるいは R7RS large (scheme regex)Sagittarius Scheme、Chibi Schemeとか・Guileのirregex文法はSREとだいたい同じSREの仕様2
・たとえば、1文字以上の繰り返しは、+だけでなく、one-or-moreという表現ができる--> 不慣れでも読みやすい正規表現が書けるSREの紹介(1)シンボルが使えるメリット1(+ “abc”)(one-or-more “abc”)3
・文字列とシンボルの2つあるのはいいことだ・無制限に名前付けができるSREの紹介(2)シンボルが使えるメリット2任意の一文字: anyアルファベット:alphabetic16進数文字:hex-digit単語:word4
・部分的にSchemeコードを挿入して評価で展開できるSREの紹介(3)quasi-quote`(one-or-more“abc”,something“def”)5
・SRFI44(scheme set char) 文字の集合データ構造・[ ] ⇐よりも自由に文字の集合を使えるSREの紹介(4)データ構造の挿入ができる(char-set #\a #\b #\c) ;a,b,cの文字の集合(char-set-filter(lambda (c ) (not (char=? c #\z)))char-set:letter) ;z以外のレターの集合6
・のんびりしていたから・当初SRE->Clojure(Java)正規表現をやるつもりだったマッチングは実装しなくてよいしすぐ終わると思っていた..X SREの表現力の幅のほうが大きかったClojureへの移植が遅れた言い訳無理ではないけど、表現を落とす実装コストがかかる7
・S式なのでパーサ実装コストは省ける・マッチングはNFA/DFA、VM 、微分型とかで実装できる“正規表現技術入門 ――最新エンジン実装と理論的背景”という本が良い→ CLに移植しませんか?それでも実装は楽8
・S式で表現するとのはよいこと・実装遅れたのはSREが良すぎたせい・暇な人は実装しようまとめ
・S式にするとよいものは他になにがあるのか?SXML(S式XML文法)おわり(tag (@ (attr1 "value1")(attr2 "value2"))(nested "Text node")(empty))DBクエリとか?SXQL