デラング整備,越化記法と越化参照(旧・疑似実体参照)についての検討で終了。
越化の基本的な仕様について記法・内部実装両面から急速にまとまった。
単一文字越化
まず,バックスラッシュを使った単一文字越化では,全ての文字を越化することにした。ただし,この「越化」は,「通常とは異なる特殊な解釈を試みること」であり,論組言語等でのそれと同様,必ずしもデラング記法としての解釈を避けることではない。
- 原則として,デラングの特殊文字であるかどうかにかかわらず,どの文字に対してもバックスラッシュを削除して当該文字を維持する。
- ただし,数式記法における
\[ ... \]
や\( ... \)
のように,通常特殊文字として解釈されない文字に特殊な意味を与えることにも用いる。
非特殊文字の扱い
軽量標記言語で単一文字越化の対象を非特殊文字に付けた場合の挙動としては,「不明なエスケープシーケンス」などと違了を出すわけにはいかないので,以下の2つが考えられる。
普段非特殊文字にあえて越化文字を付けてみることなどないので,一般的にどう実装するものなのか分からなかったが,特に定石があるわけではなさそうだ。
当初はなんとなく前者を想定していたが,この場合,全ての特殊(になりうる)文字を予め定義しておく必要があり,挙動の変則性が用者を混乱させる懸念もある。デラングの場合は文脈によって特殊文字になったりならなかったりすることも多いため,その対応も含めるとかなり複雑化してしまう。
後者の方が分かりやすいといえば分かりやすく,先日交度記法で出来た代置子方式を応用すれば実装も単純化出来る。数式記法などでは越化対象文字を判別する必要があるが,これは代置子への置換処理の前に制御子に置換すればいい。
いずれにせよ後から変更するのが難しい仕様ではないので,まずは実装の単純性を取るべきだろう。
数式記法との整合性
越化記法との整合性を深く考えず,LaTeX 方面の慣習に従い導入した数式記法の \[ ... \]
や \( ... \)
をどうするかという問題に少し手間取った。
これまで越化記法も「デラング記法としての解釈を避ける」ためのものとして想定していたが,ここで本来の越化という概念に立ち返り,「通常とは異なる特殊な解釈を試みる」ためのものとすることで整合させることにした。
越化参照
単一文字越化で「越化」という概念を捉え直した結果,これまで Dex で「疑似実体参照」と呼んでいたものを「越化参照」として再定義することが出来た。
これに伴い,疑似実体参照では &_foo;
としていた記法を,越化の意が直感的に分かりやすい &^foo;
に統一することにした。代置子は &^[連番];
,「制御子」(ここで命名)は &^[名前];
となる。
越化用の代置子に関しては &^1;
などと書き分けるかと考えたのとほぼ同時に前述の越化概念の拡張があり,そもそもこれまで「疑似実体参照」と呼んでいたものが越化列の役割と同じであることに気付いた。
参照先に実体があるわけではないので「疑似実体参照」という名称にはずっと違和感があったものの,良い代替案が見つからなかった。これで越化記法の課題と同時に解決してしまった。