2013-05-10 10 views

答えて

8

++は、Javaの字句解析のための有効なトークンであるため、声明x+++ ++yはとしてトークンに解析されます:

(x)(++)(++)(+)(y) 

上記:x+++++yが無効にトークン化されるのに対し

(x)(++)(+)()(++)(y) 

++演算子は、(x++)の結果ではない数値変数であるものにしか適用できないため、無効なjavaです。このタイプのトークン化は、maximal munchという概念の大きな例です。

JLS section 3.2

から最長可能変換は、別の語彙の翻訳を希望しながら、結果が最終的に正しいプログラムを作成していない場合でも、各ステップで使用されています。

したがって、トークン化a、 - 、 - 、bが可能であっても、入力文字a - bは、文法的に正しいプログラムの一部ではないa、 - bとしてトークン化(§3.5)されます。文法的に正しいプログラムの一部。

+0

ありがとうございました。 – DSF

関連する問題