前面已經介紹建立分析樹,下面就來詳細地說明乙個例子,看看到底生成什麼樣的分析樹,
c源程式如下:
#005int ntest1 = 1;
#006int ntest2 = 2;
#007int ntest3;
#008int i;
#009
#010ntest3 = ntest1 + ntest2;
把上面的源程式分析後,就生成下面的
dag樹,如下:
#2 addrlp4 count=1 ntest1
#3 cnsti4 count=1 1
'1 asgni4 count=0 #2 #3 4 4
左子樹是
addrlp4
,右子樹是
cnsti4
,根節點是
asgni4
。這是第
5行的樹。
#2 addrlp4 count=1 ntest2
#3 cnsti4 count=1 2
'1 asgni4 count=0 #2 #3 4 4
左子樹是
addrlp4
,右子樹是
cnsti4
,根節點是
asgni4
。這是第
6行的樹。
#2 addrlp4 count=2 ntest3
#5 addrlp4 count=1 ntest1
#4 indiri4 count=1 #5
#7 addrlp4 count=1 ntest2
#6 indiri4 count=1 #7
#3 addi4 count=1 #4 #6
'1 asgni4 count=0 #2 #3 4 4
這是第10行的樹。根節點是
asgni4
,它的左子樹是
addrlp4
,也就是
ntest3
。它的右子樹是
addi4
,也就是
ntest1 + ntest2
。ntest1
是由#4 indiri4
和#5 addrlp4
樹構成的。
ntest2
也是#6 indiri4
和#7 addrlp4
構成的。 前面
1,2,
3等號碼是節點序號。
LCC編譯器的源程式分析 66 DAG樹分析例子
前面已經介紹建立分析樹,下面就來詳細地說明乙個例子,看看到底生成什麼樣的分析樹,c源程式如下 005 int ntest1 1 006 int ntest2 2 007 int ntest3 008 int i 009 010 ntest3 ntest1 ntest2 把上面的源程式分析後,就生成下...
LCC編譯器的源程式分析 12 13
語法分析是比較複雜的處理,下面再來分析乙個例子,它的 如下 typedef unsigned short wchar t typedef wchar t wint t 第一句語句在lcc裡的處理,前面已經解釋清楚,主要生成wchar t儲存符號表裡,並且記錄這個id的型別屬性。那麼第二句是怎麼樣通過...
LCC編譯器的源程式分析 18 19
lcc編譯器的源程式分析 19 全域性函式的定義 函式定義funcdefn處理裡,已經準備好呼叫引數和引數返回,接著就是呼叫全域性函式宣告來處理。如下面的 132 宣告函式。133 cfunc dclglobal sclass,id,ty,pt 134 上面的 是處理函式全域性定義。現在就去就分析d...