2020-03-17: 線形マッチの実装してる(無理)
やったこと
グラブル
30連でなんか引いた。
水着だしきっとつよい。多分。
https://mobile.twitter.com/make_now_just/status/1239811173521866752
ReRE.js
線形マッチできるVMをひたすら考察していた。
現状の課題は2つ。
- 後読み中のキャプチャの扱い
- 例えば
/^.*(?<=(a*)(a*))$/をaa'にマッチさせたら、後読み部分は本来は後ろから読むので、結果は['aa', '', 'aa']になる。だけど通常と同じようにマッチを行なったら['aa', 'aa', '']となって、左の(a*)に入力が吸われてしまう。 - 上手くやれそうでやれそうにない‥‥。Tagged NFAとかの理論をちゃんと学ぶべきかも
- 例えば
- 否定先読み・後読みの扱い
- キャプチャが意味を持つ可能性がある肯定先読み・後読みと統一的に扱おうとすると複雑になりすぎる
- 諦めてこの部分は論理式に落とし込んでしまった方が良さそう
- BDD(二分決定図)を使う
後者はどうにかなりそうだけど、前者が難しすぎる。
BDDの実装はこれを参考にする。