2011-03-01 (Tue)#1Excel の罫線で木構造を描いてあるドキュメントを眺めて毒づきつつ、ふと 2次元空間に対する正規表現を思いついた。 正規表現での単一文字のマッチは、「現在の位置」にある文字があることを確認した後、現在位置を「右に」一文字ずらすという動作である。 そして、単一文字のマッチ以外に「現在の位置」をずらす機能はない。 とすると、そこを右だけじゃなくて上下左右にずらせるようにするだけで、2次元に拡張できるのではないか? そうするための拡張方法はとりあえずふたつ考えられる。 単一文字のマッチで位置をずらすのは変えず、ただしエンジン内でずらす方向を保持し、その方向を修正する指示をつくる。 たとえば、1次元正規表現の [:lit, "a"] と同じ意味が 2次元正規表現では [:cat, [:dir, :right], [:lit, "a"]] で表現できるようにする