2016-11-20 12 views
0

:それは彼らのASTに来るとき抽象構文木この場合?私は、次の2 C/C++/Javaコード片のための抽象構文木を作成しようとしています

1) return j++-200*20-++A*7 

2) return j++-200*20-A++*7 

誰かが彼らの違いを説明していただけますか?

+0

ASTを自分で作成して比較できないのはなぜですか? –

+0

@Ira Baxter問題は私が同じ木を得ることです... – MATH000

+0

'++ A'と' A ++ 'の違いについては、[Increment/Decrement Operators(++/- )]( SOのドキュメントのhttp://stackoverflow.com/documentation/java/176/operators#t=201611200425069375529)ページを参照してください。 – Gulllie

答えて

3

return j++ - 200*20 - ++A*7およびreturn j++ - 200*20 - A++*7は、Aを含むノードまで同じASTを持ちます。最初のノードはpre-increment Aノードで、2番目のノードはpost-increment Aノードです。

+0

どうすればツリー上で「++」よりも優先度が低い「見る」ことができますか? – MATH000

+1

優先度はどういう意味ですか?優先順位の違いはここでは重要ではないため、ポストインクリメントとプリインクリメントは異なるセマンティクスを持つ異なる演算子です。 '@ +'シンボルを使っていれば、それらが異なる演算子であるという事実を強調するのがより意味があるかもしれません。差異の解析は、位置に基づいて検出できます。 – andars

+0

つまり、 'return x ++'は最初に結果を返してからxを1だけ増やします。一方、 'return ++ x'はまずxを1だけ増やしてから結果を返します。 AST? – MATH000

関連する問題