詞法分析和語(yǔ)法分析
_______________________________________________________________________________
廣義而言,語(yǔ)言是一套采用共同符號(hào)撑蚌、表達(dá)方式與處理規(guī)則争涌。
就編程語(yǔ)言而言亮垫,編程語(yǔ)言也是特定規(guī)則的符號(hào),用來(lái)傳達(dá)特定的信息,自然語(yǔ)言是人與人之間溝通的渠道稀并,而編程語(yǔ)言則是機(jī)器之間,人與機(jī)器之間的溝通渠道。
人有非常復(fù)雜的語(yǔ)言能力蝙场,語(yǔ)言本身也在不斷的進(jìn)化李丰,人之間能夠理解復(fù)雜的語(yǔ)言規(guī)則舟舒,而計(jì)算機(jī)并沒(méi)有這么復(fù)雜的系統(tǒng)氏仗,它們只能接受指令執(zhí)行操作,編程語(yǔ)言則是機(jī)器和人(準(zhǔn)確說(shuō)是程序員)之間的橋梁珊拼,編程語(yǔ)言的作用就是將語(yǔ)言的特定符號(hào)和處理規(guī)則進(jìn)行解釋?zhuān)?/p>
編程語(yǔ)言的編譯器(compliler)或解釋器(interpreter)一般包括兩大部分:
1 讀取源程序澎现,并處理語(yǔ)言結(jié)構(gòu)渠欺。
2 處理語(yǔ)言結(jié)構(gòu)并生成目標(biāo)程序胳岂。
Lex和Yacc可以解決第一個(gè)問(wèn)題,第一個(gè)部分也可以分為兩個(gè)部分:
1 將代碼切分為一個(gè)個(gè)標(biāo)記(token)
2 處理程序的層級(jí)結(jié)構(gòu)(hierarchical structure)
Lex/Flex
_____________________________________________________________________________________
Yacc/Bison
_____________________________________________________________________________________
php初學(xué)者---千鋒php課堂筆記