入力文字列自身でマーク付けに使う文字を指定する #2

コマンドラインオプションでメタ文字を指定する版のflex用ソースのみで記述した字句解析器を基に変更を加えようと考えていた。
ところがこれが案外面倒そうなのだ。
元のソースはマーク外またはマーク付け部分の文字列の一塊をパターンで一気に検出しているため、
メタ文字変更シーケンスが途中で挿入されるようなケースをそのままの規則部のパターン群では扱えない。

とりあえず、手書きの字句解析器をyacc/bisonによる構文解析器から呼び出す方法を取ってみる。
コマンドラインオプション版の記事#2、#3のparser.yを基に変更してみようと思う。
正確には、flexの利用によって削除した字句解析器抜きの#5のparser.yに手書きのyylex関数を再追加する。
この時、構文規則は変更しない。
メタ文字変更シーケンスは字句解析器で検出した後、構文解析器に送ることはせず、
字句解析器でメタ文字を変更した後、あたかもそれが無かったかのようにさらに字句解析を続けるのである。
もちろん、字句解析器はこのシーケンスを検出するだけで、構文解析器で処理を行う方法も取れるが、
そのためには構文規則をそれなりに変更しなければならない。
これは前述したflexオンリーで書こうとする場合に規則部をかなり変更しなければならないのと同じである。
たぶん、書法の自由度を考えれば構文規則を変えるほうがflexオンリーの場合よりは楽だとは思うが。