最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解文法的定義與分類(編譯原理)

 更新時(shí)間:2023年08月02日 11:40:04   作者:xigama  
計(jì)算機(jī)的語(yǔ)言具有嚴(yán)格的語(yǔ)法、語(yǔ)義,易于形式化的特征,這篇文章主要介紹了詳解文法的定義與分類(編譯原理),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

編譯原理-文法的定義與分類

前言

語(yǔ)言是一定的群體用來(lái)信息交流的工具 ,而信息交流的基礎(chǔ)是需要按照共同約定的生成規(guī)則理解規(guī)則去生成句子和理解句子。計(jì)算機(jī)的語(yǔ)言具有嚴(yán)格的語(yǔ)法、語(yǔ)義,易于形式化的特征。程序設(shè)計(jì)語(yǔ)言經(jīng)過(guò)形式化提取后可以得到以下內(nèi)容:

程序設(shè)計(jì)語(yǔ)言(Programming Language):組成程序的所有語(yǔ)句的集合。

程序(Program):滿足語(yǔ)法規(guī)則的語(yǔ)句序列。

語(yǔ)句(Sentence) :滿足語(yǔ)法規(guī)則的單詞序列。

單詞(Token) :滿足詞法規(guī)則的字符串。

語(yǔ)言的描述形式——文法,對(duì)于單詞和語(yǔ)句有不同的概念:

詞法——單詞
單詞的組成規(guī)則
描述方法:BNF范式、正規(guī)式

語(yǔ)法——語(yǔ)句
語(yǔ)句的組成規(guī)則
描述方法:BNF范式、語(yǔ)法(描述)圖

一、文法的定義

以賦值語(yǔ)句為例,首先進(jìn)行如下四個(gè)定義:
非終結(jié)符號(hào)集V =
{<賦值語(yǔ)句>,<左部量>,<右部表達(dá)式>,<簡(jiǎn)單變量>,<下標(biāo)變量>,<運(yùn)算符>}
終結(jié)符號(hào)集T =
{a , b, c, m[1], m[2], m[3], +, -}
語(yǔ)法規(guī)則集P =
{<賦值語(yǔ)句> —> <左部量>=<右部表達(dá)式> ,……}
開(kāi)始符號(hào)S = <賦值語(yǔ)句>

按照上述定義,則文法G的形式化定義為誒一個(gè)四元組:

G=(V,T,P,S)

V:非終結(jié)符(Variable )集
每個(gè)非終結(jié)符稱為一個(gè)語(yǔ)法變量(成分)——代表某個(gè)語(yǔ)言的各種子結(jié)構(gòu)。

T:終結(jié)符(Terminal)集。
語(yǔ)言的句子中出現(xiàn)的字符,V∩T = 空集

S:開(kāi)始符號(hào)(Start Symbol),S∈V
代表文法所定義的語(yǔ)言,至少在產(chǎn)生式左側(cè)出現(xiàn)一次。

P:產(chǎn)生式(Product)集合。

二、文法的分類

根據(jù)語(yǔ)言結(jié)構(gòu)的復(fù)雜程度(形式語(yǔ)言)(涉及文法的復(fù)雜程度、分析方法的選擇、反映文法描述語(yǔ)言的能力)可以分為以下四種語(yǔ)言:
0型文法 (即:短語(yǔ)結(jié)構(gòu)文法)
1型文法 (即:上下文有關(guān)文法)
2型文法 (即:上下文無(wú)關(guān)文法)
3型文法 (即:正規(guī)文法)

0.短語(yǔ)結(jié)構(gòu)語(yǔ)言(PSL)

如果G滿足文法定義的要求,則G是0型文法(短語(yǔ)結(jié)構(gòu)文法PSG: Phrase Structure Grammar )。

1.上下文有關(guān)文法(CSG)

如果對(duì)于任意α —>β∈P,均有 **|β|≥|α|**成立,則稱G為1型文法。即:上下文有關(guān)文法(CSG——Context Sensitive Grammar)

2.上下文無(wú)關(guān)文法(CFG)

如果對(duì)于任意α —>β∈P,均有|β|≥|α|,并且α∈V成立,則稱G為2型文法,即:上下文無(wú)關(guān)文法(CFG: Context Free Grammar)(CFG能描述程序設(shè)計(jì)語(yǔ)言的多數(shù)語(yǔ)法成分)。

3.正規(guī)文法(RG)

設(shè)A、B∈V,a∈T+
右線性(Right Linear)文法:A→aB或A→a
左線性(Left Linear)文法:A→Ba或A→a
都是3型文法(正規(guī)文法 Regular Grammar -RG)
其中左線性文法和右線性文法等價(jià),只是識(shí)別句子的方向不同。

正規(guī)文法與正則表達(dá)式的相互轉(zhuǎn)化.

三、判斷以下文法的類別

G1: S —> 0 | 1 | 00 | 11 (正則文法)
G2: S —> A | B | AA | BB, A —> 0, B —> 1 (上下文無(wú)關(guān)文法)
G3: S —> 0 | 1 | 0A | 1B, A —> 0, B —> 1 (正則文法)
G4: S —> A | B | BC, A —> 0, B —> 1,C —> 21, C —> 11, C—> 2 (上下文無(wú)關(guān)文法)
G5: S —> 0 | 0S (正則文法)
G6: S —> ε | 0S (短語(yǔ)結(jié)構(gòu)文法)
G7: S —> ε | 00S111 (短語(yǔ)結(jié)構(gòu)文法)
G8: A —> aS | bS | cS | a | b | c (正則文法)
G9: S —> 0A | 1B | 2C | 0SA | 1SB | 2SC
0A —> A0 1A —> A1
2A —> A2 0B —> B0
1B —> B1 2B —> B2
0C —> C0 1C —> C1
2C —> C2
(上下文有關(guān)文法)
G10: S —> aT | bT | cT
T —> ε | a | b | c | 0 | 1 | 2 | 3 | aT | bT | cT | 0T | 1T | 2T | 3T (短語(yǔ)結(jié)構(gòu)文法)

總結(jié)

G = (V,T,P,S)是一個(gè)文法,α→β ∈ P

  • G是0型文法,L(G)是0型語(yǔ)言;
  • |α|≤|β|:G是1型文法,L(G)是1型語(yǔ)言(除S→ε);
  • α∈V : G是2型文法,L(G)是2型語(yǔ)言;
  • A→aB或A→a: G是右線性文法,L(G)是3型語(yǔ)言
    A→Ba或A→a : G是左線性文法,L(G)是3型語(yǔ)言

四種文法之間的關(guān)系是將產(chǎn)生式作進(jìn)一步限制而定義的。

四種文法之間的逐級(jí)“包含”關(guān)系如下:

到此這篇關(guān)于詳解文法的定義與分類(編譯原理)的文章就介紹到這了,更多相關(guān)文法的定義與分類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 綁定/約束 (binding)指兩個(gè)東西之間的關(guān)聯(lián)

    綁定/約束 (binding)指兩個(gè)東西之間的關(guān)聯(lián)

    綁定/約束 (binding)指兩個(gè)東西之間的關(guān)聯(lián)。如 名字 與它所代表的事物。又如屬性與實(shí)體之間的關(guān)聯(lián),又或者符號(hào)與操作之間的關(guān)聯(lián)。
    2011-01-01
  • Unity中webgl使用避雷要素指南

    Unity中webgl使用避雷要素指南

    這篇文章主要介紹了Unity中webgl使用過(guò)程中會(huì)踩過(guò)的坑,以及如何解決這些問(wèn)題,有需要的朋友可以借鑒參考下,希望可以對(duì)廣大讀者朋友能夠有所幫助
    2021-09-09
  • IDEA導(dǎo)入Git項(xiàng)目的方法

    IDEA導(dǎo)入Git項(xiàng)目的方法

    這篇文章主要介紹了IDEA導(dǎo)入Git項(xiàng)目的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Web 開(kāi)發(fā)常用工具 大家自己查找下載

    Web 開(kāi)發(fā)常用工具 大家自己查找下載

    看到了Web通信分析工具 這篇文章,除了burpsuite其他我日常都經(jīng)常使用。于似乎我整理了一下我自己用的其他的WEB開(kāi)發(fā)工具。
    2009-06-06
  • 使用openssl實(shí)現(xiàn)私有CA的搭建和證書(shū)的頒發(fā)

    使用openssl實(shí)現(xiàn)私有CA的搭建和證書(shū)的頒發(fā)

    這篇文章主要介紹了使用openssl實(shí)現(xiàn)私有CA的搭建和證書(shū)的頒發(fā),使用openssl搭建私有CA,openssll和私有CA搭建相關(guān)的配置文件,里面包含了很多和證書(shū)相關(guān)的設(shè)置,后續(xù)創(chuàng)建對(duì)應(yīng)文件的時(shí)候需要根據(jù)配置文件中的信息進(jìn)行創(chuàng)建,需要的朋友可以參考下
    2022-10-10
  • 一個(gè)批量編碼轉(zhuǎn)換及ASP/JS加解密/簡(jiǎn)繁轉(zhuǎn)換的工具

    一個(gè)批量編碼轉(zhuǎn)換及ASP/JS加解密/簡(jiǎn)繁轉(zhuǎn)換的工具

    一個(gè)批量編碼轉(zhuǎn)換及ASP/JS加解密/簡(jiǎn)繁轉(zhuǎn)換的工具...
    2007-05-05
  • vscode設(shè)置多行展示文件標(biāo)簽的操作方法

    vscode設(shè)置多行展示文件標(biāo)簽的操作方法

    這篇文章主要給大家介紹了vscode設(shè)置多行展示文件標(biāo)簽的操作方法,文中通過(guò)圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • Web 設(shè)計(jì)與開(kāi)發(fā)者必須知道的 15 個(gè)站點(diǎn)

    Web 設(shè)計(jì)與開(kāi)發(fā)者必須知道的 15 個(gè)站點(diǎn)

    今天讀到一篇文章,介紹了15個(gè)對(duì) Web 設(shè)計(jì)與開(kāi)發(fā)師極端有用的站點(diǎn),里面有不少也是我們一直在使用的,也許對(duì)很多人都有用,翻譯出來(lái)以餉同仁。
    2009-08-08
  • 獲取目錄下所有文件名的代碼

    獲取目錄下所有文件名的代碼

    獲取目錄下所有文件名的代碼,需要的朋友可以參考下。
    2011-07-07
  • 使用Git進(jìn)行版本控制的實(shí)踐分享

    使用Git進(jìn)行版本控制的實(shí)踐分享

    Git 是目前最流行的分布式版本控制系統(tǒng),廣泛應(yīng)用于前端開(kāi)發(fā),Git的強(qiáng)大功能讓開(kāi)發(fā)者能夠有效管理代碼、協(xié)作開(kāi)發(fā)、追蹤代碼變更和版本發(fā)布,在本文中,我們將探討前端開(kāi)發(fā)者在使用 Git 進(jìn)行版本控制時(shí)應(yīng)遵循的一些最佳實(shí)踐,需要的朋友可以參考下
    2024-10-10

最新評(píng)論

青海省| 哈密市| 旬邑县| 福安市| 金溪县| 安徽省| 扬中市| 桃江县| 宣城市| 博野县| 双柏县| 鄱阳县| 山阴县| 北京市| 合江县| 望奎县| 岐山县| 治县。| 汝阳县| 浙江省| 西乌珠穆沁旗| 南康市| 巩留县| 夏河县| 嘉善县| 铜川市| 高密市| 康马县| 清水河县| 澄江县| 汾阳市| 禹城市| 斗六市| 兴国县| 天门市| 双辽市| 宁乡县| 射洪县| 昌吉市| 东乡县| 日照市|