溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

web解釋器模式的參與者有哪些

發(fā)布時間:2022-01-13 16:35:20 來源:億速云 閱讀:96 作者:iii 欄目:大數(shù)據(jù)

本文小編為大家詳細介紹“web解釋器模式的參與者有哪些”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當(dāng),希望這篇“web解釋器模式的參與者有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

適用性

如果某種語言可以表示為足夠簡單的抽象語法樹,而且效率不是最重要因素,就可以使用解釋器模式。

結(jié)構(gòu)

web解釋器模式的參與者有哪些

參與者


? AbstractExpression (抽象表達式,如Expr)
—聲明抽象的解釋操作,這個操作被所有的子類共享。

?NonterminalExpression (非終結(jié)符表達式,如AdditiveExpr、MultiplicativeExpr等)
— 文法中所有可以分解為下級語法節(jié)點組合的語法節(jié)點都需要一個NonterminalExpression類來實現(xiàn)其功能。
—NonterminalExpression為下級語法節(jié)點維護一個AbstractExpression類型的列表。
— 實現(xiàn)解釋 (Interpret) 操作。解釋 (Interpret) 除了要遞歸調(diào)用表示下級語法節(jié)點的解釋操作之外,也可以對各個節(jié)點的解釋結(jié)果進行進一步計算。例如AdditiveExpr需要對每個MultiplicativeExpr的解釋結(jié)果進行廣義(加或減)的加法計算。

? TerminalExpression (終結(jié)符表達式,如IntegerLiteral等)

— 直接實現(xiàn)文法中的簡單操作或計算。
? Context(上下文)
— 包含解釋器之外的一些全局信息。
? Client(客戶)

— 構(gòu)建語法樹。

— 調(diào)用解釋操作。


協(xié)作


? Client構(gòu)建一個抽象語法樹. 然后初始化上下文并調(diào)用解釋操作。構(gòu)建語法樹也可以作為語法節(jié)點類的功能來實現(xiàn)。畢竟最熟悉語法節(jié)點的就是語法節(jié)點類自己。

? 每一非終結(jié)符表達式節(jié)點調(diào)用相應(yīng)子表達式的解釋操作并合成處理結(jié)果。而各終結(jié)符表達式負責(zé)進行不依賴其他節(jié)點的簡單處理或計算。
? 每一節(jié)點的解釋操作可以通過上下文來存儲和訪問解釋器的狀態(tài)。例如取得或儲存的計算結(jié)果、取得事先定義的常量、調(diào)用預(yù)先登錄的函數(shù)等都需要通過上下文來實現(xiàn)。

讀到這里,這篇“web解釋器模式的參與者有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

web
AI