這一節就是講是怎么translation的,translation常見的幾種。 source program target program compiler interpreter bytecodes just-in-time compiler intermediate program assembly language preprocessor
這一節對編譯器常見結構進行了簡介
大概是個這個圖上所有的部分都做了簡介
Lexical Analysis 把傳進來的程序搞成一組token
x=y+12;<id,1> <=> <id,2> <+> <12> <;>lexemes
Syntax Analysis 檢查token是不是合法的,順便把這個搞成一顆由運算符為根的樹
大概就是一棵樹看一下是不是符合定義的BNF規則 算法貌似兩個,一個從根節點遞歸向下看,一個從葉節點往上推
context-free grammar
Semantic Analysis 重要功能是檢查類型合不合法 type checking
Intermediate Code Generation 就是source到target的中間各種轉換,常用three-address code
Code Optimization 優化轉換出來的code
t1=<id,1>t2=t1+60t3=t2<id,2>=t3優化t1 = <id,1> + 60<id,2> = t1Code Generation 把中間轉換出來的code轉化成target code
Symbol-Table Management 存變量信息
<id,1> 對應 x,類型為int,值為xx的變量optimization coercions
編譯器進化的歷史
新聞熱點
疑難解答