Expression:
Term
Expression "+" Term
Expression "-" Term
Term:
Primary
Term "*" Primary
Term "/" Primary
Term "%" Primary
Primary:
Number
"(" Expression ")"
Number:
floating-point-literal
次のようなコード例を挙げます。
double expression()
{
double left = term();
Token t = get_token();
switch (t.kind) {
case '+':
return left + expression();
case '-':
return left - expression();
default:
return left;
}
}
@t2y に「You’ve been writing only about cat, recently. I feel you are over.」っていわれちゃいました。そんなことではいけないと思い、それから最新のwebsocketに対応してくれ、ってリクエストが来ているwebscoketのpython clientもバージョンアップすべく、RFCになったほうを読んでいます。大きな処理の流れは、昔のwebsocketと大きくは違わないので割愛します。
Mac OS は 10.7 (Lion) から標準的にフルスクリーンに対応しました。Windows も次期リリースの Windows 8 から Metro UI を採用し、フルスクリーンの UI を採用します。一方デスクトップ Linux で大きなシェアを持つ Ubuntu も Unity により没入型の UI を実現しました。
このように最近の OS はことごとくフルスクリーン化を推し進めています。そしてフルスクリーン化したアプリとドラッグアンドドロップは極めて相性が悪いです。よって、このままフルスクリーンが標準として広がっていくとドラッグアンドドロップという操作は忘れ去られてしまうかもしれません。
それでもフルスクリーン化を推し進めるというのなら、現在主流のファイルというインターフェイスを隠蔽した新しいUI体系を作る必要があると思います。それこそスマートフォンで実現されているように、ファイルを意識させることはなく、そこにはアプリとデータがあるだけで、あとはデータを受け渡すための仕組み(Android のインテントとか)があるというようなものです。触ったことがないのでわらかないのですが、Chrome OS はもうすでにそうなっているんでしょうか(Google Chrome がベースのままだとアプリが持っているデータの受け渡しができそうにありませんが)。とりあえず2012年リリースされるはずの Windows 8 がどのような形になるのかを楽しみにしておきます。