C/C++の<strike>Digram</strike> Digraphでした。すみません。

ネタがないので、Digraphの話でも。

昔、ISOなんたらという文字コードで使えない記号があったため、Trigraphという機能がCに実装された。
なんか、'??'に文字を続けると何かできるらしい。まあ別の文字に化けるとかなんとか。

ところがこれが恐ろしい機能で、プリプロセッサで処理すんだか知らないけど、プログラムのどの位置でも動いた。ので "Hello, world??"とかやると死亡。

あまりに酷いので今は代わりにDigraphという規格があって、

  • '<%' '%>' で '{' '}'
  • '<:' ':>' で '[' ']'
  • '%:' で '#'

の代わりができる。

DigraphはTrigraphと違い、トークンレベルで認識される。つまり、lexのファイルに並列してリストしてある。

だから、文字列トークン内でDigraphが化けるなどの現象は発生しない。

まあ、何が言いたいかというと、Trigraphは今時標準では使えないけど、Digraphは標準で使えるので、sedか何かで置換するなりして使えばかなり不思議なC/C++コードがあっという間に出来上がりなわけだ。

それでは、Happy Hacking!