編譯原理讀書筆記
position := initial + rate * 60
詞法分析
- 識別符號
position
- 賦值符號
:=
- 識別符號
initial
- 加號
+
- 識別符號
rate
- 乘號
*
- 數字
60
語法分析
規則
- 任何一個識別符號都是表示式
- 任何一個數都是表示式
- 如果
expression1
和expression2
是表示式,那麼expression1 + expression2
expression1 * expression2
也是表示式
rate\*60
是一個表示式,initial+rate\*60
也是一個表示式
定義語句的規則
- 如果
identifier1
是一個識別符號,expression2
是一個表示式,則
identifier1 := expression2
是一個語句
- 如果
expression1
是一個表示式,statement2
是一個語句,則
while(expression1) do statement2
if(expression1) then statement2
也是一個語句
如果給出一段原始碼,掃描輸入流就可以完成識別符號的識別,直到掃描到符號(加號 減號 乘號等)為止,之前掃描的字母和數字都可以當成是一個識別符號,然後把這個識別符號儲存到符號表中,再再輸入流中把這個識別符號和那個符號刪掉之後,再繼續向後掃描
語義分析
編譯器的個階段
源程式 -> 詞法分析器 -> 語法分析器 -> 語義分析器 -> 中間程式碼生成器 -> 程式碼優化器 -> 程式碼生成器 -> 目標程式
還是這個例子:position := initial + rate * 60
詞法分析
id1 := id2 + id3 * 60
中間程式碼生成器
temp1 := inttoreal(60)
temp2 := id3 * temp1
temp3 := id2 * temp2
id1 := temp3
程式碼優化器
temp1 := id3 * 60.0
id1 := id2 * temp1
程式碼生成器
MOVF id3, R2
MULF #60.0, R2
MOVF id2, R1
ADDF R2, R1
MOVF R1, id1
相關文章
- 《編譯原理》閱讀筆記:p18編譯原理筆記
- 《編譯原理》閱讀筆記:p19-p24編譯原理筆記
- 《編譯原理》閱讀筆記:p25-p32編譯原理筆記
- 《編譯原理》閱讀筆記:p1-p3編譯原理筆記
- 《編譯原理》閱讀筆記:p4-p17編譯原理筆記
- 深入理解JVM讀書筆記四: (早期)編譯器優化JVM筆記編譯優化
- 讀書筆記...筆記
- 讀書筆記筆記
- 《讀書與做人》讀書筆記筆記
- 『TensorFlow』讀書筆記_降噪自編碼器筆記
- Cucumber讀書筆記筆記
- 散文讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- CoreJava讀書筆記-------Java筆記
- flask讀書筆記Flask筆記
- Vue讀書筆記Vue筆記
- MONGODB 讀書筆記MongoDB筆記
- Qt讀書筆記QT筆記
- Node讀書筆記筆記
- SAP讀書筆記筆記
- YII讀書筆記筆記
- iptables 讀書筆記筆記
- Makefile 讀書筆記筆記
- mysql讀書筆記MySql筆記
- 鎖讀書筆記筆記
- dataguard讀書筆記筆記
- 讀書筆記3筆記
- 讀書筆記2筆記
- postgres 讀書筆記筆記
- 編譯領域裡程碑之作:龍書《編譯原理》編譯原理
- 【讀書筆記】代理模式翻譯成C++了筆記模式C++
- 讀書筆記|Windows 除錯原理學習|持續更新筆記Windows除錯
- 編譯原理 START 龍虎鯨書簡介編譯原理
- 《重構》讀書筆記筆記
- webpackDemo讀書筆記Web筆記
- PMBook讀書筆記(一)筆記
- Effective Java 讀書筆記Java筆記
- js高程讀書筆記JS筆記