C/C++には代替トークン(alternative tokens)なるものがあることを知った。まず下のコードを見てほしい。
%:include <iostream> using namespace std; int main() <% int array<:100:>; for (int i = 0; i < 100; ++i) <% array<:i:> = i; if ( i % 3 == 0 and (not i % 5 == 0)) <% cout << i << ", "; %> %> return 0; %>
まるでC++に見えないコードだが、きちんとgccでコンパイルできる。これは以下のコード
#include <iostream> using namespace std; int main() { int array[100]; for (int i = 0; i < 100; ++i) { array[i] = i; if ( i % 3 == 0 && !(i % 5 == 0)) { cout << i << ", "; } } return 0; }
を、代替トークンを使って書き換えたものである。
代替トークンとは、一部の演算子や記号のように、環境によっては入力が難しい表現を、他の表現でも書けるようにしたものらしい。例えば、'{' と書く代わりに '<%' と書いても等価となる。もっとも、現在でも#や!が入力できないキーボードが本当に存在するのか疑わしいが…。