3

Java パーサーはあいまいな単項演算子をどのように処理しますか?

たとえば、int xどこかで宣言したと仮定すると、+--x完全に有効なコードです。---xも理論的には有効ですが、コンパイラはエラーをスローします。同様に、+~~~~~~+--xは受け入れられ~~~~~~++--xますが、どちらも有効な式に解析できますが、受け入れられません。

私が知る限り、文法があいまいであるため、トークン化中に処理する必要がありますが、それを説明するものは何も見つかりません。

4

2 に答える 2

3

---x意味がある可能性があるため、または-(--x)可能性がないためにあいまいではない間、あいまいです。--(-x)-(-(-x))+--x+-(-x)

于 2013-02-21T02:04:02.223 に答える
3

Stephen Pが示唆しているように、Javaでは単項演算子は右から左にグループ化されます。つまり、さまざまな演算子が右にグループ化される可能性があるため、これらの式はあいまいです。単項演算子の規則については、Java7仕様のセクション15.15を参照してください。

編集

ある程度、あなたはあなた自身の質問に答えたと思います。--- xのようにあいまいな式は、コンパイラが何をしたいかわからないため、コンパイルエラーを引き起こすようです。このような場合、式をより具体的にすることによって、たとえば括弧を追加してあいまいさを取り除くことによって、あいまいさを解決する必要があるのはプログラマーです。

于 2013-02-21T02:14:54.277 に答える