摘要:
剛剛發(fā)了上一篇文章之后就發(fā)現(xiàn)狀態(tài)機(jī)畫錯(cuò)了。雖然LiveWriter有打開博客并修改文章的功能,不過為了讓我留下一個(gè)教訓(xùn),我還是決定發(fā)一篇勘誤。這個(gè)教訓(xùn)就是,作分析的時(shí)候不要隨便“跳步”,該一步一步來就一步一步來。其實(shí)人呢,就是很容易忘掉以前的教訓(xùn)的了。第一個(gè)告訴我不能這么干的人其實(shí)是小學(xué)三年級(jí)的數(shù)學(xué)老師。當(dāng)時(shí)我因?yàn)閼械脤懽郑杂?jì)算應(yīng)用題的時(shí)候省了幾步,被批評(píng)了。故事就從狀態(tài)機(jī)開始。文法我就不重復(fù)了,見上一篇文章。現(xiàn)在我們從狀態(tài)機(jī)開始。第一個(gè)狀態(tài)機(jī)是直接從文法變過來的:然后我們把所有的非終結(jié)符跳轉(zhuǎn)都通過Shift和Reduce連接到該非終結(jié)符所代表的狀態(tài)機(jī)的狀態(tài)上面,就會(huì)變成下面的圖。具體的做 閱讀全文
posted @ 2012-12-07 18:50
陳梓瀚(vczh)
閱讀(1488)
評(píng)論(0)
推薦(1)
摘要:
上一篇博客講到了構(gòu)造符號(hào)表的事情。構(gòu)造完符號(hào)表之后,就要進(jìn)入語(yǔ)義分析的后一個(gè)階段了:構(gòu)造狀態(tài)機(jī)。跟我以前寫的如何實(shí)現(xiàn)正則表達(dá)式引擎的兩篇文章講的一樣,自動(dòng)機(jī)先從Epsilon Nondeterministic Automaton開始,然后一步一步構(gòu)造成Deterministic Automaton。但是語(yǔ)法分析和正則表達(dá)式有很大不同,那么這個(gè)自動(dòng)機(jī)是什么樣子的呢?(對(duì)學(xué)術(shù)感興趣的人可以去wiki一下“下推自動(dòng)機(jī)”)下推自動(dòng)機(jī)和有限自動(dòng)機(jī)的區(qū)別是,下推自動(dòng)機(jī)擴(kuò)展成普通的自動(dòng)機(jī)的時(shí)候,他的狀態(tài)的數(shù)目是無(wú)限的(廢話)。但是無(wú)限的東西是沒辦法用編程來表達(dá)的,那怎么辦呢?那就加入一個(gè)不定長(zhǎng)度的“狀態(tài)描述 閱讀全文
posted @ 2012-12-07 16:44
陳梓瀚(vczh)
閱讀(4946)
評(píng)論(3)
推薦(4)
浙公網(wǎng)安備 33010602011771號(hào)