發(fā)文章
發(fā)文工具
撰寫(xiě)
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊(cè)
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
個(gè)人認(rèn)為編譯原理對(duì)于一個(gè)程序員來(lái)說(shuō)很重要,,可能你認(rèn)為編程的時(shí)候用的都是C++、C#,、Java等高級(jí)語(yǔ)言,,至于編譯原理懂與不懂并無(wú)大礙。其實(shí)不然,,所謂萬(wàn)變不離其宗,,所有高級(jí)語(yǔ)言的誕生都是基于最根本的編譯原理的。搞懂了編譯原理,,對(duì)于一個(gè)程序員的能力提升有著很大的幫助,。因?yàn)樗鼤?huì)讓你對(duì)編程有更加深刻的理解,有助于你寫(xiě)出質(zhì)量更高的代碼,。好廢話(huà)不多說(shuō),,切入正題!
本文主要說(shuō)一下編譯原理里的文法,、正規(guī)式,、有窮自動(dòng)機(jī)和語(yǔ)法推導(dǎo)樹(shù)。
文法
文法就是計(jì)算機(jī)語(yǔ)言的一個(gè)嚴(yán)格的規(guī)范,,有點(diǎn)類(lèi)似人類(lèi)語(yǔ)言的語(yǔ)法,。就像形容詞修飾名詞,副詞修飾形容詞跟動(dòng)詞類(lèi)似,,只不過(guò)計(jì)算機(jī)的文法的標(biāo)準(zhǔn)和規(guī)范更加的嚴(yán)格而已,。
文法的表達(dá)式:G=(Vn,Vt,P,S) Vn是非終結(jié)符的集合,Vt是終結(jié)符的集合,,P是推導(dǎo)式的一個(gè)集合,,S是開(kāi)始符。
文法中有三種符號(hào)和四種文法類(lèi)型:
三種符號(hào)為:開(kāi)始符——S,;非終結(jié)符——A,、B、C,、AB等,;終結(jié)符——a,、b、c等,。其實(shí)說(shuō)白了開(kāi)始符就是Start的縮寫(xiě),,非終結(jié)符就是大寫(xiě)字母或大寫(xiě)字母的組合(開(kāi)始符S也是非終結(jié)符),終結(jié)符就是小寫(xiě)字母或小寫(xiě)字母的組合,。
文法共分為四種,,即0型文法——短語(yǔ)文法;1型文法——上下文有關(guān)文法,;2型文法——上下文無(wú)關(guān)文法,;3型文法——正規(guī)文法。
四個(gè)文法類(lèi)的定義是逐漸增加限制的,,即每一種正規(guī)文法都是上下文無(wú)關(guān)的,,每一種上下文無(wú)關(guān)文法都是上下文有關(guān)的,,而每一種上下文有關(guān)文法都是短語(yǔ)文法,。稱(chēng)0型文法產(chǎn)生的語(yǔ)言為0型語(yǔ)言。上下文有關(guān)文法,、上下文無(wú)關(guān)文法和正規(guī)文法產(chǎn)生的語(yǔ)言分別稱(chēng)為上下文有關(guān)語(yǔ)言,、上下文無(wú)關(guān)語(yǔ)言和正規(guī)語(yǔ)言。
注意:除0型文法以外,,每一種文法都必須符合上一種文法,。
0型文法:
書(shū)中的定義:設(shè)G=(VN,VT,,P,,S),如果它的每個(gè)產(chǎn)生式α→β是這樣一種結(jié)構(gòu):α∈( VN∪VT )*且至少含有一個(gè)非終結(jié)符,,而β∈( VN∪VT )*,,則G是一個(gè)0型文法。
通俗的解釋?zhuān)杭串a(chǎn)生式左邊至少有一個(gè)大寫(xiě)字母,,右邊隨意,。
1型文法:
書(shū)中的定義:設(shè)G=(VN,VT,,P,,S),若P中的每一個(gè)產(chǎn)生式α→β均滿(mǎn)足|β|≥|α| ,,僅僅S→ε除外,,則文法G是1型文法。
通俗的解釋?zhuān)杭串a(chǎn)生式右邊的字母?jìng)€(gè)數(shù)必須大于等于左邊的字母?jìng)€(gè)數(shù),。
2型文法:
書(shū)中的定義:設(shè)G=(VN,,VT,,P,S),,若P中的每一個(gè)產(chǎn)生式α→β滿(mǎn)足:α是一非終結(jié)符,,β∈( VN∪VT )*則此文法稱(chēng)為2型文法。
通俗的解釋?zhuān)杭串a(chǎn)生式左邊必須完全都是大寫(xiě)字母,。
3型文法:
書(shū)中的定義:設(shè)G=(VN,,VT,P,,S),,若P中的每一個(gè)產(chǎn)生式的形式都是A→aB或A→a,其中A和B都是非終結(jié)符,,a是終結(jié)符,,則G是3型文法。
通俗的解釋?zhuān)杭此挟a(chǎn)生式右邊要么沒(méi)有大寫(xiě)字母,,如果有必須全部在小寫(xiě)字母右邊或者全部在小寫(xiě)字母左邊也就是要保持線(xiàn)性一致,。
正規(guī)式
正規(guī)式是由正規(guī)文法轉(zhuǎn)換而來(lái),它們之間的轉(zhuǎn)換規(guī)則共有三條:
規(guī)則1:正規(guī)文法(A—>xB,B->y ),,正規(guī)式(A=xy),。這點(diǎn)很簡(jiǎn)單,用小學(xué)的數(shù)學(xué)知識(shí)就可以解決,!如:A=xB,,B=y,那么A=xy,。
規(guī)則2:正規(guī)文法(A—>xA|y),,正規(guī)式(A=x*y)。這是一個(gè)遞歸,,它其實(shí)是——正規(guī)文法(A—>xA,,A—>y),因?yàn)?span style="TEXT-ALIGN: left; LINE-HEIGHT: 26px; FONT-FAMILY: 'Microsoft YaHei'; FONT-SIZE: 16px">A—>xA,,而右邊的A又可以有A—>xA,,所以就可以無(wú)限循環(huán)下去,最終還是要有結(jié)尾的,,要不就沒(méi)法表示了,,所以有A=x*y,表明有無(wú)窮個(gè)x并以y結(jié)尾,。
規(guī)則3:A—>x,A->y,。那么A=x|y。這個(gè)就很簡(jiǎn)單了,不過(guò)多解釋了,。
其實(shí)上面說(shuō)的那些話(huà)完全可以用下面一個(gè)表來(lái)代替,,簡(jiǎn)單而又明了,哈哈,!
有窮自動(dòng)機(jī)跟語(yǔ)法推導(dǎo)樹(shù)留到下一篇博客再為大家講解吧,!敬請(qǐng)期待!
來(lái)自: 昵稱(chēng)10504424 > 《軟件雜談》
0條評(píng)論
發(fā)表
請(qǐng)遵守用戶(hù) 評(píng)論公約
編譯原理 自動(dòng)識(shí)別機(jī)
編譯原理 自動(dòng)識(shí)別機(jī)在編譯原理中,圖靈機(jī)(TM)識(shí)別0型語(yǔ)言線(xiàn)性界限自動(dòng)機(jī)(LBA)識(shí)別上下文有關(guān)語(yǔ)言下推自動(dòng)機(jī)(PDA)識(shí)別上下文無(wú)關(guān)語(yǔ)言有窮自動(dòng)機(jī)(FA)識(shí)別正規(guī)語(yǔ)言0型文法產(chǎn)生的語(yǔ)言稱(chēng)為0型語(yǔ)言,。1型文法...
編譯原理之文法二
文法產(chǎn)生的語(yǔ)言,。0型文法。1型文法:有一特例:α→ε也滿(mǎn)足1型文法,。3型文法:如有:A→a,A→aB,B→a,B→cB,,則符合3型文法的要求,。例子:A→ab,A→aB,B→a,B→cB中的A→ab不符合3型文法的定義,如果把...
深入淺出編譯原理
經(jīng)過(guò)前面的內(nèi)容,我們知道了,,語(yǔ)言,語(yǔ)法,,文法,,產(chǎn)生式,推導(dǎo),,語(yǔ)法分析樹(shù),,語(yǔ)素,詞法單元,,中間表示,,等等等等,這些概念以及他們之間的區(qū)別和聯(lián)系,,這一小節(jié)就展示一個(gè)完整的編譯器的前端的代碼實(shí)...
博客園 - 理想與現(xiàn)實(shí)之間 - 關(guān)于正則表達(dá)式,、正則文法、NFA,、LR(1)
上面四種文法有包含的關(guān)系,,1型文法是0型文法的一個(gè)子集,2型文法是1型文法的一個(gè)子集,,3型文法是2型文法的一個(gè)子集,。3型文法(正則文法)與正則表達(dá)式(Regular Expression)是等價(jià)的,,任意一個(gè)正則文法...
[轉(zhuǎn)載] ANTLR——編譯原理基礎(chǔ)知識(shí) - 6DAN - 博客園
一個(gè)文法G[S],S為啟始規(guī)則,,如果它的所有規(guī)則符合形如:a => b 其中a和b都是G[S]文法的符號(hào)串,,但a中至少要有一個(gè)非終結(jié)符,這時(shí)G[S...
從零開(kāi)始學(xué)自然語(yǔ)言處理(十二)——上下文無(wú)關(guān)文法
N:Nonterminal 非終結(jié)符集合文法形式語(yǔ)言中主要有4種文法:0型文法(無(wú)限制文法)1型文法(上下文有關(guān)文法)2型文法(上下文無(wú)關(guān)文法)3型文法(正則文法)我們現(xiàn)在不用糾結(jié)每種文法的具體含義,,因?yàn)?..
腳本解釋器(HOC)的實(shí)現(xiàn)與分析
makefileC代碼 hoc: y.tab.o lex.yy.o maths.o gcc y.tab.o lex.yy.o maths.o -o hoc -lm y.tab.o:y.tab.c gcc -c y.tab.c y.tab.c:hoc.y yacc -d hoc.y lex.yy.o:lex.yy.c ...
2016 騰訊軟件開(kāi)發(fā)面試題(不定項(xiàng)選擇題),,我仿佛回到大學(xué)時(shí)代,好多都不會(huì)
0-型文法(無(wú)限制文法或短語(yǔ)結(jié)構(gòu)文法)包括所有的文法,。1-型文法(上下文相關(guān)文法)生成上下文相關(guān)語(yǔ)言,。正規(guī)語(yǔ)言類(lèi)包含于上下文無(wú)關(guān)語(yǔ)...
第四章語(yǔ)法分析
第四章 語(yǔ)法分析程序設(shè)計(jì)語(yǔ)言構(gòu)造的描述程序設(shè)計(jì)語(yǔ)言構(gòu)造的語(yǔ)法可使用上下文無(wú)關(guān)文法或BNF表示法來(lái)描述文法可給出精確易懂的語(yǔ)法規(guī)則可以自動(dòng)構(gòu) 造出某些類(lèi)型的文法的語(yǔ)法分析器文法指出了語(yǔ)言的結(jié)構(gòu),...
微信掃碼,,在手機(jī)上查看選中內(nèi)容
微信掃碼,在手機(jī)上查看選中內(nèi)容