您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“web解釋器模式的知識點有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“web解釋器模式的知識點有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
語法建模
作為解釋器模式的標準做法,定義了語言的語法之后的步驟就是為每種語言要素準備一個類。對于四則運算的例子,其類結構如下:
類圖稍微大了一些,下面以幾條規則為例進行說明。
1. 泛化關系
示例:[5]PrimaryExpr::=NumericLiteral|ParenthesizedExpr| FunctionCall
式[5]的含義為基本表達式PrimaryExpr可以是數值型字面值NumerLiteral、帶括號表達式ParemthesizedExpr、函數調用中的某一種。轉化成類關系就是泛化關系。所有適用PrimaryExpr的地方都可以使用NumericLiteral、ParenthesizedExpr、FunctionCall中的一種來代替。
2.組合關系
[2]AdditiveExpr::=MultiplicativeExpr(("+">
當AdditiveExpr由多個MultiplicativeExpr構成時,二者之間的關系又可以看作是組合關系。
當只有一個MultiplicativeExpr的時候,式[2]可以退化為:
AdditiveExpr::=MultiplicativeExpr
這種情況可以認為二者之間是簡單的泛化關系。
3.簡單組合關系
[7]ParenthesizedExpr::="(" Expr ")"
式[7]可以看作1對1的簡單組合關系。
形成語法樹
回頭看一下前一篇文章中的表達式:
100.0 * sin(29 + (23 * 6)) + sqrt(cos(34 * 5))
這個表達式轉換成語法樹如下:
分析過程是沿著類圖由上而下進行,直至找到適合的類型為止。例如最初的分析從AdditiveExpr開始,它的下級節點應該是多個MultiplicativeExpr,但是右側不符合MultiplicativeExpr的條件,因此沿著類圖向下搜索直至找到符合條件的FuncitonCall為止。如此周而復始就可以得到整個語法樹。
讀到這里,這篇“web解釋器模式的知識點有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。