真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

web解釋器模式的動(dòng)機(jī)是什么

本篇內(nèi)容主要講解“web解釋器模式的動(dòng)機(jī)是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“web解釋器模式的動(dòng)機(jī)是什么”吧!

為增城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及增城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、增城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

意圖

根據(jù)語言的語法定義實(shí)現(xiàn)一個(gè)解釋器,用于解釋執(zhí)行該語言的語句。

動(dòng)機(jī)

一般來講,軟件解決問題都是通過程序員編寫程序?qū)崿F(xiàn)的。例如進(jìn)行計(jì)算,通信等。這種方式在大部分情況下是有效的,但是當(dāng)需求多變的時(shí)候,則存在不夠靈活的問題。解決這個(gè)問題的方法有很多種,例如為處理增加參數(shù),或通過處理的組合形成新處理等等。在某些情況下,如果可以將問題歸納提煉得出某些簡(jiǎn)單的語句,就可以構(gòu)建一個(gè)解釋器來解釋并執(zhí)行。

數(shù)學(xué)計(jì)算就屬于這種情況,例如下面的表達(dá)式:

  100.0 * sin(29 + (23 * 6)) + sqrt(cos(34 * 5))

對(duì)于不同的表達(dá)式,輸入數(shù)據(jù)的個(gè)數(shù)、層級(jí)的構(gòu)成都會(huì)不同。這時(shí)相對(duì)現(xiàn)實(shí)的解決辦法就是定義一種規(guī)則,然后按照這個(gè)規(guī)則來實(shí)現(xiàn)一個(gè)解釋器并利用這個(gè)解釋器來解釋和執(zhí)行用戶的輸入。對(duì)于復(fù)合算式的例子來講,執(zhí)行就是計(jì)算出結(jié)果。首先我們來定義表達(dá)式的規(guī)則:

[1]Expr::= AdditiveExpr 

【::=】的含義是【定義為】。因此式[1]可以理解為表達(dá)式Expr定義為加法表達(dá)式AdditiveExpr。 

[2] AdditiveExpr::=MultiplicativeExpr ( ("+" | "-") MultiplicativeExpr )*

【|】的含義是【或者】,【*】的含義是【0到任意多個(gè)】。因此式[2]的含義就是加法表達(dá)式AdditiveExpr定義為一個(gè)乘法表達(dá)式MultiplicativeExpr后面跟著0到任意多個(gè)前面帶正號(hào)或負(fù)號(hào)的乘法表達(dá)式。換一種說法就是若干個(gè)被正號(hào)或負(fù)號(hào)連接的乘法表達(dá)式。
 
[3]MultiplicativeExpr::= UnaryExpr ( ("*" | "/" | "%" ) UnaryExpr)*

式[3]的含義是乘法表達(dá)式MultiplicativeExpr定義為若干個(gè)由乘號(hào)或除號(hào)或取余符號(hào)連接的元表達(dá)式UnaryExpr構(gòu)成。
 
[4]UnaryExpr::=("-" | "+")?PrimaryExpr

【?】的含義是【有或者沒有】。式[4]的含義是元表達(dá)Unary式定義為前面帶或者不帶正負(fù)號(hào)的基本表達(dá)式PrimaryExpr。
 
[5]PrimaryExpr::= NumericLiteral | ParenthesizedExpr | FunctionCall

式[5]的含義為基本表達(dá)式PrimaryExpr可以是數(shù)值型字面值NumerLiteral、帶括號(hào)表達(dá)式ParemthesizedExpr、函數(shù)調(diào)用中的某一種。
 
[6]NumericLiteral::=IntegerLiteral | DecimalLiteral

數(shù)值型字面值定義為整數(shù)型字面值IntergerLiteral或者小數(shù)型字面值DecimalLiteral。
 
[7]ParenthesizedExpr::="(" Expr ")"

帶括號(hào)表達(dá)式定義為被小括號(hào)包圍的表達(dá)式。表達(dá)式又可以進(jìn)一步分解為加法表達(dá)式、乘法表達(dá)式等。
 
[8]FunctionCall::=FunctionName "(" (Expr(","Expr)*)? ")"

函數(shù)調(diào)用表達(dá)式FunctionCall由函數(shù)名FunctionName和包含在括號(hào)中的參數(shù)列表組成。參數(shù)列表由多個(gè)用逗號(hào)連接的表達(dá)式組成。
 
[9]IntegerLiteral ::=Digits

整數(shù)型字面值IntegerLiteral定義為數(shù)字Digits。
 
[10]DecimalLiteral ::=(("." Digits) | (Digits"."Digits)) 

小數(shù)型字面值DecimalLiteral有兩種形式。一種是小數(shù)點(diǎn)加數(shù)字,另一種是數(shù)字加小數(shù)點(diǎn)再加數(shù)字。
 
[11]Digits ::=[0-9]+

【+】的含義是【1到多個(gè)】,【[0-9]】表示數(shù)字0到9之間的某一個(gè)。因此式[11]的含義就是數(shù)字定義為1到多個(gè)字符0到字符9之間的字符。
 
[12] FunctionName=sin|cos|tan|asin|acos|atan|power|sqrt

式[12]定義可能的函數(shù)名。

到此,相信大家對(duì)“web解釋器模式的動(dòng)機(jī)是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)頁標(biāo)題:web解釋器模式的動(dòng)機(jī)是什么
文章位置:http://weahome.cn/article/jscjcp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部