[英]Java precedence on abstract syntax tree?
我的期中復習問題之一要求以不同的方式解析該樹-pre / postfix等。它也詢問這兩種方式:在“ Infix,Java優先規則”和“ Infix,從左至右的優先級”中優先級規則和普通的從左到右中綴規則之間的區別是什么? 我以為如果是Java優先,那么可能需要像實際Java代碼這樣的“ newline”之類的東西,但是我真的看不到這里真正要問的是什么。 謝謝您的幫助
另一個問題。 您如何看待d和e節點? 如果是后綴,(de)fh *-是否適合那部分樹?
我認為從左到右的優先級只是意味着您只需從左到右應用所有中綴運算符,這樣
2 * 3 + 4 * 5
被解釋為
((2 * 3) + 4) * 5 = 50
在Java和除APL之外我所知道的所有其他編程語言中, *
優先級高於+
或-
,這意味着表達式被解釋為
(2 * 3) + (4 * 5) = 26
(Java有更多的運算符,因此優先級的順序非常復雜。但是,如果只看+
, -
, *
和/
,則只需知道*
和/
具有更高的優先級;並且對於具有相同優先級的運算符,則從左到右對其進行評估。)
我猜想作業正在問您如何使用兩種不同的優先級規則來表示樹。 當然,您可以在所有內容之間加上括號,這意味着優先級規則根本不適用:
(foo (a, (b + c) * ((d ? e) - (f * h)), (j * k)) - g
[ ?
那里是因為圖中似乎缺少一個框。]因此,您可能應該以沒有不必要的括號的方式編寫它,這意味着您需要了解優先級規則。
要回答關於d
和e
最后一個問題:您應該問問老師,因為我猜這意味着“打印錯誤”。 除非我研究了它們,否則除非他們提出了一些新的語法樹圖,否則看起來好像缺少一個盒子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.