:それは彼らのASTに来るとき抽象構文木この場合?私は、次の2 C/C++/Javaコード片のための抽象構文木を作成しようとしています
1) return j++-200*20-++A*7
2) return j++-200*20-A++*7
誰かが彼らの違いを説明していただけますか?
:それは彼らのASTに来るとき抽象構文木この場合?私は、次の2 C/C++/Javaコード片のための抽象構文木を作成しようとしています
1) return j++-200*20-++A*7
2) return j++-200*20-A++*7
誰かが彼らの違いを説明していただけますか?
return j++ - 200*20 - ++A*7
およびreturn j++ - 200*20 - A++*7
は、A
を含むノードまで同じASTを持ちます。最初のノードはpre-increment A
ノードで、2番目のノードはpost-increment A
ノードです。
どうすればツリー上で「++」よりも優先度が低い「見る」ことができますか? – MATH000
優先度はどういう意味ですか?優先順位の違いはここでは重要ではないため、ポストインクリメントとプリインクリメントは異なるセマンティクスを持つ異なる演算子です。 '@ +'シンボルを使っていれば、それらが異なる演算子であるという事実を強調するのがより意味があるかもしれません。差異の解析は、位置に基づいて検出できます。 – andars
つまり、 'return x ++'は最初に結果を返してからxを1だけ増やします。一方、 'return ++ x'はまずxを1だけ増やしてから結果を返します。 AST? – MATH000
ASTを自分で作成して比較できないのはなぜですか? –
@Ira Baxter問題は私が同じ木を得ることです... – MATH000
'++ A'と' A ++ 'の違いについては、[Increment/Decrement Operators(++/- )]( SOのドキュメントのhttp://stackoverflow.com/documentation/java/176/operators#t=201611200425069375529)ページを参照してください。 – Gulllie