Java パーサーはあいまいな単項演算子をどのように処理しますか?
たとえば、int xどこかで宣言したと仮定すると、+--x完全に有効なコードです。---xも理論的には有効ですが、コンパイラはエラーをスローします。同様に、+~~~~~~+--xは受け入れられ~~~~~~++--xますが、どちらも有効な式に解析できますが、受け入れられません。
私が知る限り、文法があいまいであるため、トークン化中に処理する必要がありますが、それを説明するものは何も見つかりません。
Java パーサーはあいまいな単項演算子をどのように処理しますか?
たとえば、int xどこかで宣言したと仮定すると、+--x完全に有効なコードです。---xも理論的には有効ですが、コンパイラはエラーをスローします。同様に、+~~~~~~+--xは受け入れられ~~~~~~++--xますが、どちらも有効な式に解析できますが、受け入れられません。
私が知る限り、文法があいまいであるため、トークン化中に処理する必要がありますが、それを説明するものは何も見つかりません。
---x意味がある可能性があるため、または-(--x)可能性がないためにあいまいではない間、あいまいです。--(-x)-(-(-x))+--x+-(-x)
Stephen Pが示唆しているように、Javaでは単項演算子は右から左にグループ化されます。つまり、さまざまな演算子が右にグループ化される可能性があるため、これらの式はあいまいです。単項演算子の規則については、Java7仕様のセクション15.15を参照してください。
編集
ある程度、あなたはあなた自身の質問に答えたと思います。--- xのようにあいまいな式は、コンパイラが何をしたいかわからないため、コンパイルエラーを引き起こすようです。このような場合、式をより具体的にすることによって、たとえば括弧を追加してあいまいさを取り除くことによって、あいまいさを解決する必要があるのはプログラマーです。