C/C++の<strike>Digram</strike> Digraphでした。すみません。
ネタがないので、Digraphの話でも。
昔、ISOなんたらという文字コードで使えない記号があったため、Trigraphという機能がCに実装された。
なんか、'??'に文字を続けると何かできるらしい。まあ別の文字に化けるとかなんとか。
ところがこれが恐ろしい機能で、プリプロセッサで処理すんだか知らないけど、プログラムのどの位置でも動いた。ので "Hello, world??"とかやると死亡。
あまりに酷いので今は代わりにDigraphという規格があって、
- '<%' '%>' で '{' '}'
- '<:' ':>' で '[' ']'
- '%:' で '#'
の代わりができる。
DigraphはTrigraphと違い、トークンレベルで認識される。つまり、lexのファイルに並列してリストしてある。
だから、文字列トークン内でDigraphが化けるなどの現象は発生しない。
まあ、何が言いたいかというと、Trigraphは今時標準では使えないけど、Digraphは標準で使えるので、sedか何かで置換するなりして使えばかなり不思議なC/C++コードがあっという間に出来上がりなわけだ。
それでは、Happy Hacking!