国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

文章標(biāo)題

2019-11-09 13:28:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

什么是巴科斯范式?

巴科斯范式(BNF: Backus-Naur Form 的縮寫(xiě))是由 John Backus 和 Peter Naur 首先引入的用來(lái)描述計(jì)算機(jī)語(yǔ)言語(yǔ)法的符號(hào)集。現(xiàn)在,幾乎每一位新編程語(yǔ)言書(shū)籍的作者都使用巴科斯范式來(lái)定義編程語(yǔ)言的語(yǔ)法規(guī)則。    

擴(kuò)展的巴科斯范式(Augmented BNF): 

RFC2234 定義了擴(kuò)展的巴科斯范式(ABNF)。近年來(lái)在Internet的定義中ABNF被廣泛使用。ABNF做了更多的改進(jìn),比如說(shuō),在ABNF中,尖括號(hào)不再需要。

     巴科斯范式基本語(yǔ)法:在雙引號(hào)中的字(“Word”)代表著這些字符本身。而double_quote用來(lái)代表雙引號(hào)。

在雙引號(hào)外的字(有可能有下劃線)代表著語(yǔ)法部分。

尖括號(hào)( < > )內(nèi)包含的為必選項(xiàng)。

方括號(hào)( [ ] )內(nèi)包含的為可選項(xiàng)。

大括號(hào)( { } )內(nèi)包含的為可重復(fù)0至無(wú)數(shù)次的項(xiàng)。

豎線( | )表示在其左右兩邊任選一項(xiàng),相當(dāng)于”O(jiān)R”的意思。

::= 是“被定義為”的意思。

終結(jié)符就是可以直接出現(xiàn)在語(yǔ)言中的符號(hào),非終結(jié)符就是語(yǔ)言中某些抽象的概念。  

用BNF定義BNF( 有意思吧 :)):

<BNF>::=     <非終結(jié)符>::=<或項(xiàng)列表>    <或項(xiàng)列表>::=     <項(xiàng)>     |     <或項(xiàng)列表>|<項(xiàng)>    <項(xiàng)>::=     <非終結(jié)符>     |     <終結(jié)符>   |   <項(xiàng)><非終結(jié)符>   |   <項(xiàng)><終結(jié)符>    <非終結(jié)符>::=       <非終結(jié)符名>            比如可以用BFN這樣描述C語(yǔ)言的聲明語(yǔ)句:  

  <聲明語(yǔ)句>   ::=   <類(lèi)型><標(biāo)識(shí)符>;   |   <類(lèi)型><標(biāo)識(shí)符>[<數(shù)字>];   

這一句中 <聲明語(yǔ)句> 這個(gè)非終結(jié)符被定義成了兩種形式(上面用 | 隔開(kāi)的兩部分),在這里引入了三個(gè)終結(jié)符:   分號(hào)(;)、左方括號(hào)( [ )、右方括號(hào)( ] )。      <類(lèi)型>   ::=   <簡(jiǎn)單類(lèi)型>   |   <指針類(lèi)型>   |   <自定義類(lèi)型>    <指針類(lèi)型>   ::=   <簡(jiǎn)單類(lèi)型>   *   |   <自定義類(lèi)型>   *    <簡(jiǎn)單類(lèi)型>   ::=   int|char|double|float|long|short|void    <自定義類(lèi)型>   ::=   enum<標(biāo)識(shí)符>|struct<標(biāo)識(shí)符>|union<標(biāo)識(shí)符>|<標(biāo)識(shí)符>    到這里就基本上把<類(lèi)型>定義清楚了。     <數(shù)字>   ::=   0X<十六進(jìn)制數(shù)字串>   |   0<八進(jìn)制數(shù)字串>   |   <十進(jìn)制數(shù)字串>    <十六進(jìn)制數(shù)字串>   ::=   <十六進(jìn)制數(shù)字>   |   <十六進(jìn)制數(shù)字串><十六進(jìn)制數(shù)字>      <八進(jìn)制數(shù)字串>   ::=   <八進(jìn)制數(shù)字>   |   <八進(jìn)制數(shù)字串><八進(jìn)制數(shù)字>      <十進(jìn)制數(shù)字串>   ::=   <十進(jìn)制數(shù)字>   |   <十進(jìn)制數(shù)字串><十進(jìn)制數(shù)字>      <十六進(jìn)制數(shù)字>   ::=   <十進(jìn)制數(shù)字>   |   A   |   B   |   C   |   D   |   E   |   F    <十進(jìn)制數(shù)字>     ::=   <八進(jìn)制數(shù)字>   |   8   |   9      <八進(jìn)制數(shù)字>   ::=   0   |   1   |   2   |   3   |   4   |   5   |   6   |   7    到這里就把<數(shù)字>定義清楚了       <標(biāo)識(shí)符>   ::=   <字母>   |   <標(biāo)識(shí)符>   <字母數(shù)字串>    <字母數(shù)字串>   ::=   <字母>|<十進(jìn)制數(shù)字>|<字母數(shù)字串><字母>|<字母數(shù)字串><十進(jìn)制數(shù)字>      <字母>   ::=   _   |   <大寫(xiě)字母>   |   <小寫(xiě)字母>    <小寫(xiě)字母>   ::=   a|b|c|d|e|f|g|h|i|j   ……   (偷個(gè)懶)    <大寫(xiě)字母>   ::=   A|B|C|D|E|F|G|H|I|J   ……     到此為止整個(gè)聲明語(yǔ)句就定義完了(就是說(shuō)已經(jīng)沒(méi)有非終結(jié)符了)。

雖然看起來(lái)很繁,但前面定義的各種非終結(jié)符都可以很容易的在別的地方重用比如,函數(shù)聲明可以定義成下面的樣子:  

  <函數(shù)聲明語(yǔ)句>   ::=   <類(lèi)型><標(biāo)識(shí)符>(<形參表>);    <形參表>   ::=   <類(lèi)型><標(biāo)識(shí)符>   |   <形參表>,<形參表>    只用兩句就描述完了,所以BNF實(shí)際上比用自然語(yǔ)言要簡(jiǎn)練得多,整個(gè)C語(yǔ)言只用一二百句就可以描述清楚,而且相當(dāng)?shù)木_,不會(huì)有自然語(yǔ)言中那種模棱兩可的表達(dá)。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 齐齐哈尔市| 冀州市| 土默特左旗| 日照市| 县级市| 拜泉县| 专栏| 新乐市| 古浪县| 武强县| 从江县| 大荔县| 镇沅| 乐都县| 和顺县| 新营市| 裕民县| 日土县| 板桥市| 山丹县| 株洲市| 双鸭山市| 涡阳县| 湘西| 五常市| 晋宁县| 武城县| 武邑县| 镇赉县| 临湘市| 图木舒克市| 蓬安县| 建德市| 那坡县| 库尔勒市| 江都市| 慈溪市| 井陉县| 遵义市| 象州县| 吉林省|