青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
    整整寫了一天,終于基本寫完了CMinus的語義分析的代碼,只剩下一個檢查struct是否可以計算出長度的問題(環引用造成的)。下面貼出語義分析的結果,從結果中可以看出符號表的結構以及構造方法:

    結果分成兩部分,第一部分是格式化后的代碼,第二部分是符號表。
  1 開始語法分析
  2 void BubbleSort (int* Input, int Count)
  3 {
  4   int i = 0;
  5   while ((i < (Count - 1)))
  6   {
  7     int j = (Count - 2);
  8     while ((j >= i))
  9     {
 10       if ((Input[j] > Input[(j + 1)]))
 11       {
 12         int Temp = Input[j];
 13         Input[j] = Input[(j + 1)];
 14         Input[(j + 1)] = Temp;
 15       }
 16       j -= 1;
 17     }
 18     i += 1;
 19   }
 20 }
 21 
 22 int Fab (int Index)
 23 {
 24   if ((Index < 2))
 25     return 1;
 26   else
 27     return (Fab((Index - 1)) + Fab((Index - 2)));
 28 }
 29 
 30 typedef struct
 31 {
 32   int Data;
 33   Node* Next;
 34 } Node;
 35 
 36 extern void* malloc (int) alias "malloc";
 37 
 38 extern void free (void*) alias "free";
 39 
 40 Node* CreateNodes ()
 41 {
 42   Node* Head = (Node*)malloc(sizeof(Node));
 43   *Head = Node{0null};
 44   Node* Tail = Head;
 45   int Current = 1;
 46   do
 47   {
 48     Node* NewNode = (Node*)malloc(sizeof(Node));
 49     *NewNode = Node{Current, null};
 50     Tail->Next = NewNode;
 51     Tail = NewNode;
 52   }
 53   while ((Current <= 4));
 54   return Head;
 55 }
 56 
 57 void FreeNodes (Node* Head)
 58 {
 59   while ((Head != null))
 60   {
 61     Node* Next = Head->Next;
 62     free(Head);
 63     Head = Next;
 64   }
 65 }
 66 
 67 void CreateAndFreeNodes ()
 68 {
 69   FreeNodes(CreateNodes());
 70 }
 71 
 72 int SubRev (int A, int B)
 73 {
 74   return (-+ B);
 75 }
 76 
 77 int Sum ()
 78 {
 79   int[5] Number = int[]{12345};
 80   int Result = 0;
 81   int Index = 0;
 82   while (true)
 83   {
 84     Result += Number[Index];
 85     Index += 1;
 86     if ((Index == 5))
 87       break;
 88     else
 89       continue;
 90   }
 91   return Result;
 92 }
 93 
 94 int GlobalA;
 95 
 96 int GlobalB = 0;
 97 
 98 const int GlobalC = 0;
 99 
100 const int GlobalD = 0;
101 
102 void Local ()
103 {
104   int LocalA;
105   int LocalB = 0;
106   const int LocalC = 0;
107   const int LocalD = 0;
108 }
109 
110 typedef int(intint) IntFunc;
111 
112 int Add (int a, int b)
113 {
114   return (a + b);
115 }
116 
117 int Sub (int a, int b)
118 {
119   return (a - b);
120 }
121 
122 void RunAll (int a, int b)
123 {
124   IntFunc[2] Funcs = IntFunc[]{Add, Sub};
125   int[2] Nums;
126   int Index = 0;
127   while ((Index < 2))
128   {
129     Nums[Index] = Funcs[Index](a, b);
130     Index += 1;
131   }
132 }
133 
134 void DifferentTypes ()
135 {
136   byte vbyte = 0;
137   unsigned byte vubyte = 0;
138   signed byte vsbyte = 0;
139   short vshort = 0;
140   unsigned short vushort = 0;
141   signed short vsshort = 0;
142   int vint = 0;
143   unsigned int vuint = 0;
144   signed int vsint = 0;
145   char vchar = L'\0';
146   wchar vwchar = L'\0';
147   float vfloat = 0.0;
148   double vdouble = 0.0;
149   bool vbool = true;
150 }
151 開始語義分析
152 語義分析完成。
153 【CMINUS TYPE TABLE】
154   TYPE<0> = signed __int8
155   TYPE<1> = unsigned __int8
156   TYPE<2> = signed __int16
157   TYPE<3> = unsigned __int16
158   TYPE<4> = signed __int32
159   TYPE<5> = unsigned __int32
160   TYPE<6> = float
161   TYPE<7> = double
162   TYPE<8> = void
163   TYPE<9> = bool
164   TYPE<10> = <WRONG-PRIMITIVE-TYPE>
165   TYPE<11> = struct (TYPE<4> Data, TYPE<16> Next)
166   TYPE<12> = function TYPE<4> (TYPE<4>, TYPE<4>)
167   TYPE<13> = pointer of TYPE<4>
168   TYPE<14> = function TYPE<8> (TYPE<13>, TYPE<4>)
169   TYPE<15> = function TYPE<4> (TYPE<4>)
170   TYPE<16> = pointer of TYPE<11>
171   TYPE<17> = pointer of TYPE<8>
172   TYPE<18> = function TYPE<17> (TYPE<4>)
173   TYPE<19> = function TYPE<8> (TYPE<17>)
174   TYPE<20> = function TYPE<16> ()
175   TYPE<21> = function TYPE<8> (TYPE<16>)
176   TYPE<22> = function TYPE<8> ()
177   TYPE<23> = function TYPE<4> ()
178   TYPE<24> = function TYPE<8> (TYPE<4>, TYPE<4>)
179   TYPE<25> = array of TYPE<4> * 5
180   TYPE<26> = array of TYPE<12> * 2
181   TYPE<27> = array of TYPE<4> * 2
182 
183 【CMINUS SYMBOL TABLE 0
184   root symbol
185   SYMBOL<Add> = local function of TYPE<12>
186   SYMBOL<BubbleSort> = local function of TYPE<14>
187   SYMBOL<CreateAndFreeNodes> = local function of TYPE<22>
188   SYMBOL<CreateNodes> = local function of TYPE<20>
189   SYMBOL<DifferentTypes> = local function of TYPE<22>
190   SYMBOL<Fab> = local function of TYPE<15>
191   SYMBOL<FreeNodes> = local function of TYPE<21>
192   SYMBOL<GlobalA> = global variable of TYPE<4>
193   SYMBOL<GlobalB> = global variable of TYPE<4>
194   SYMBOL<GlobalC> = global constant of TYPE<4>
195   SYMBOL<GlobalD> = global constant of TYPE<4>
196   SYMBOL<IntFunc> = type of TYPE<12>
197   SYMBOL<Local> = local function of TYPE<22>
198   SYMBOL<Node> = type of TYPE<11>
199   SYMBOL<RunAll> = local function of TYPE<24>
200   SYMBOL<Sub> = local function of TYPE<12>
201   SYMBOL<SubRev> = local function of TYPE<12>
202   SYMBOL<Sum> = local function of TYPE<23>
203   SYMBOL<bool> = type of TYPE<9>
204   SYMBOL<byte> = type of TYPE<0>
205   SYMBOL<char> = type of TYPE<0>
206   SYMBOL<double> = type of TYPE<7>
207   SYMBOL<float> = type of TYPE<6>
208   SYMBOL<free> = external function of TYPE<19>
209   SYMBOL<int> = type of TYPE<4>
210   SYMBOL<malloc> = external function of TYPE<18>
211   SYMBOL<null> = type of TYPE<10>
212   SYMBOL<short> = type of TYPE<2>
213   SYMBOL<signed byte> = type of TYPE<0>
214   SYMBOL<signed int> = type of TYPE<4>
215   SYMBOL<signed short> = type of TYPE<2>
216   SYMBOL<unsigned byte> = type of TYPE<1>
217   SYMBOL<unsigned int> = type of TYPE<5>
218   SYMBOL<unsigned short> = type of TYPE<3>
219   SYMBOL<void> = type of TYPE<8>
220   SYMBOL<wchar> = type of TYPE<3>
221 
222 【CMINUS SYMBOL TABLE 1
223   previous symbol is 0
224   associated function is BubbleSort
225   SYMBOL<Count> = local 1th parameter of TYPE<4>
226   SYMBOL<Input> = local 0th parameter of TYPE<13>
227 
228 【CMINUS SYMBOL TABLE 2
229   previous symbol is 1
230   associated function is BubbleSort
231   SYMBOL<i> = local variable of TYPE<4>
232 
233 【CMINUS SYMBOL TABLE 3
234   previous symbol is 2
235   associated function is BubbleSort
236 
237 【CMINUS SYMBOL TABLE 4
238   previous symbol is 3
239   associated function is BubbleSort
240   SYMBOL<j> = local variable of TYPE<4>
241 
242 【CMINUS SYMBOL TABLE 5
243   previous symbol is 4
244   associated function is BubbleSort
245 
246 【CMINUS SYMBOL TABLE 6
247   previous symbol is 5
248   associated function is BubbleSort
249 
250 【CMINUS SYMBOL TABLE 7
251   previous symbol is 6
252   associated function is BubbleSort
253   SYMBOL<Temp> = local variable of TYPE<4>
254 
255 【CMINUS SYMBOL TABLE 8
256   previous symbol is 0
257   associated function is Fab
258   SYMBOL<Index> = local 0th parameter of TYPE<4>
259 
260 【CMINUS SYMBOL TABLE 9
261   previous symbol is 8
262   associated function is Fab
263 
264 【CMINUS SYMBOL TABLE 10
265   previous symbol is 0
266   associated function is CreateNodes
267 
268 【CMINUS SYMBOL TABLE 11
269   previous symbol is 10
270   associated function is CreateNodes
271   SYMBOL<Current> = local variable of TYPE<4>
272   SYMBOL<Head> = local variable of TYPE<16>
273   SYMBOL<Tail> = local variable of TYPE<16>
274 
275 【CMINUS SYMBOL TABLE 12
276   previous symbol is 11
277   associated function is CreateNodes
278 
279 【CMINUS SYMBOL TABLE 13
280   previous symbol is 12
281   associated function is CreateNodes
282   SYMBOL<NewNode> = local variable of TYPE<16>
283 
284 【CMINUS SYMBOL TABLE 14
285   previous symbol is 0
286   associated function is FreeNodes
287   SYMBOL<Head> = local 0th parameter of TYPE<16>
288 
289 【CMINUS SYMBOL TABLE 15
290   previous symbol is 14
291   associated function is FreeNodes
292 
293 【CMINUS SYMBOL TABLE 16
294   previous symbol is 15
295   associated function is FreeNodes
296 
297 【CMINUS SYMBOL TABLE 17
298   previous symbol is 16
299   associated function is FreeNodes
300   SYMBOL<Next> = local variable of TYPE<16>
301 
302 【CMINUS SYMBOL TABLE 18
303   previous symbol is 0
304   associated function is CreateAndFreeNodes
305 
306 【CMINUS SYMBOL TABLE 19
307   previous symbol is 18
308   associated function is CreateAndFreeNodes
309 
310 【CMINUS SYMBOL TABLE 20
311   previous symbol is 0
312   associated function is SubRev
313   SYMBOL<A> = local 0th parameter of TYPE<4>
314   SYMBOL<B> = local 1th parameter of TYPE<4>
315 
316 【CMINUS SYMBOL TABLE 21
317   previous symbol is 20
318   associated function is SubRev
319 
320 【CMINUS SYMBOL TABLE 22
321   previous symbol is 0
322   associated function is Sum
323 
324 【CMINUS SYMBOL TABLE 23
325   previous symbol is 22
326   associated function is Sum
327   SYMBOL<Index> = local variable of TYPE<4>
328   SYMBOL<Number> = local variable of TYPE<25>
329   SYMBOL<Result> = local variable of TYPE<4>
330 
331 【CMINUS SYMBOL TABLE 24
332   previous symbol is 23
333   associated function is Sum
334 
335 【CMINUS SYMBOL TABLE 25
336   previous symbol is 24
337   associated function is Sum
338 
339 【CMINUS SYMBOL TABLE 26
340   previous symbol is 0
341   associated function is Local
342 
343 【CMINUS SYMBOL TABLE 27
344   previous symbol is 26
345   associated function is Local
346   SYMBOL<LocalA> = local variable of TYPE<4>
347   SYMBOL<LocalB> = local variable of TYPE<4>
348   SYMBOL<LocalC> = local constant of TYPE<4>
349   SYMBOL<LocalD> = local constant of TYPE<4>
350 
351 【CMINUS SYMBOL TABLE 28
352   previous symbol is 0
353   associated function is Add
354   SYMBOL<a> = local 0th parameter of TYPE<4>
355   SYMBOL<b> = local 1th parameter of TYPE<4>
356 
357 【CMINUS SYMBOL TABLE 29
358   previous symbol is 28
359   associated function is Add
360 
361 【CMINUS SYMBOL TABLE 30
362   previous symbol is 0
363   associated function is Sub
364   SYMBOL<a> = local 0th parameter of TYPE<4>
365   SYMBOL<b> = local 1th parameter of TYPE<4>
366 
367 【CMINUS SYMBOL TABLE 31
368   previous symbol is 30
369   associated function is Sub
370 
371 【CMINUS SYMBOL TABLE 32
372   previous symbol is 0
373   associated function is RunAll
374   SYMBOL<a> = local 0th parameter of TYPE<4>
375   SYMBOL<b> = local 1th parameter of TYPE<4>
376 
377 【CMINUS SYMBOL TABLE 33
378   previous symbol is 32
379   associated function is RunAll
380   SYMBOL<Funcs> = local variable of TYPE<26>
381   SYMBOL<Index> = local variable of TYPE<4>
382   SYMBOL<Nums> = local variable of TYPE<27>
383 
384 【CMINUS SYMBOL TABLE 34
385   previous symbol is 33
386   associated function is RunAll
387 
388 【CMINUS SYMBOL TABLE 35
389   previous symbol is 34
390   associated function is RunAll
391 
392 【CMINUS SYMBOL TABLE 36
393   previous symbol is 0
394   associated function is DifferentTypes
395 
396 【CMINUS SYMBOL TABLE 37
397   previous symbol is 36
398   associated function is DifferentTypes
399   SYMBOL<vbool> = local variable of TYPE<9>
400   SYMBOL<vbyte> = local variable of TYPE<0>
401   SYMBOL<vchar> = local variable of TYPE<0>
402   SYMBOL<vdouble> = local variable of TYPE<7>
403   SYMBOL<vfloat> = local variable of TYPE<6>
404   SYMBOL<vint> = local variable of TYPE<4>
405   SYMBOL<vsbyte> = local variable of TYPE<0>
406   SYMBOL<vshort> = local variable of TYPE<2>
407   SYMBOL<vsint> = local variable of TYPE<4>
408   SYMBOL<vsshort> = local variable of TYPE<2>
409   SYMBOL<vubyte> = local variable of TYPE<1>
410   SYMBOL<vuint> = local variable of TYPE<5>
411   SYMBOL<vushort> = local variable of TYPE<3>
412   SYMBOL<vwchar> = local variable of TYPE<3>
413 
posted on 2009-05-06 08:13 陳梓瀚(vczh) 閱讀(3059) 評論(4)  編輯 收藏 引用 所屬分類: JIT

評論:
# re: JIT腳本引擎:基本完成CMinus的語義分析 2009-05-06 19:05 | yindf
很贊呀。

不過輸出的話,你可不可以把查表以后的結果輸出來,比如TYPE<2> 寫成signed int16容易看嘛。我想查表的函數你肯定有的,調用下就好。  回復  更多評論
  
# re: JIT腳本引擎:基本完成CMinus的語義分析 2009-05-06 19:24 | 陳梓瀚(vczh)
@yindf
我這么輸出是因為我的確是這么保存數據的。如果都換掉的話,有時候發生了什么小錯誤可能就會被掩蓋掉了。  回復  更多評論
  
# re: JIT腳本引擎:基本完成CMinus的語義分析 2009-05-07 21:03 | yindf
@陳梓瀚(vczh)

還是很不錯的,全部變量的關系,作用域一目了然。  回復  更多評論
  
# re: JIT腳本引擎:基本完成CMinus的語義分析 2009-05-08 20:31 | 妞妞
一點看不懂,  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            91久久精品日日躁夜夜躁欧美 | 欧美大片在线看| 99视频国产精品免费观看| 一区二区欧美激情| 欧美在线视频观看| 亚洲欧美精品suv| 亚洲视频在线观看免费| 日韩一级不卡| 亚洲伊人第一页| 欧美一级淫片aaaaaaa视频| 性欧美大战久久久久久久久| 欧美一区午夜精品| 毛片一区二区| av成人动漫| 午夜日韩视频| 免费不卡欧美自拍视频| 欧美精品久久99| 国产模特精品视频久久久久| 在线视频国产日韩| 亚洲一区二区三区久久| 久久久久亚洲综合| 亚洲人成亚洲人成在线观看| 亚洲视频第一页| 蜜臀av国产精品久久久久| 欧美日韩中文在线| 黄色一区三区| 亚洲自拍都市欧美小说| 久久香蕉精品| 亚洲永久免费av| 欧美精品色网| 激情欧美丁香| 亚洲一区二区三区欧美| 免费欧美电影| 亚洲欧美在线看| 欧美日韩综合精品| 亚洲国产另类久久久精品极度| 亚洲男人av电影| 亚洲黄色大片| 久久久久久9| 欧美午夜在线观看| 亚洲久久一区二区| 久久久五月天| 午夜精品久久久久久久99黑人| 免费成人在线观看视频| 国产日韩欧美在线看| 国产精品99久久99久久久二8| 免费观看久久久4p| 欧美亚洲在线| 国产三区二区一区久久| 亚洲欧美网站| 99riav国产精品| 欧美韩日一区| 亚洲电影免费观看高清完整版在线| 久久成年人视频| 亚洲香蕉网站| 国产精品美女视频网站| 99热免费精品在线观看| 欧美激情第一页xxx| 久久久精品国产免大香伊| 亚洲欧美日韩在线一区| 欧美日韩国产黄| 中文欧美字幕免费| 亚洲毛片在线观看| 欧美日韩美女在线| 一区二区三区四区精品| 欧美亚洲视频| 香蕉久久夜色| 狠狠色狠狠色综合人人| 久久婷婷av| 久久九九热免费视频| 怡红院av一区二区三区| 麻豆视频一区二区| 欧美精品福利| 亚洲欧美日韩国产另类专区| 亚洲一区二区在线免费观看| 国产精品乱码一区二三区小蝌蚪| 亚洲欧美日韩一区二区| 性欧美18~19sex高清播放| 国产视频一区在线观看一区免费| 久久久久久久久蜜桃| 久久欧美肥婆一二区| 亚洲欧洲综合| 一本久道久久综合中文字幕| 国产精品一二一区| 久久久久久久久久码影片| 麻豆精品网站| 亚洲欧美日本伦理| 久久精品首页| 洋洋av久久久久久久一区| 亚洲一区二区三区在线| 影音先锋亚洲电影| 日韩视频在线观看国产| 国产亚洲成av人片在线观看桃| 欧美激情亚洲一区| 一区二区三区国产在线观看| 老司机一区二区| 欧美日韩国产影片| 久久疯狂做爰流白浆xx| 美女国内精品自产拍在线播放| 日韩写真视频在线观看| 性亚洲最疯狂xxxx高清| 亚洲激情在线| 午夜在线精品| 在线亚洲激情| 久久亚洲影音av资源网| 亚洲中午字幕| 欧美成人免费一级人片100| 亚洲欧美日韩一区二区在线 | 午夜精品视频| 中日韩视频在线观看| 老司机一区二区| 欧美在线视频一区二区| 欧美精品一区二区在线观看| 久久精品亚洲国产奇米99| 欧美三级视频在线观看| 亚洲第一综合天堂另类专| 国产深夜精品福利| 在线综合欧美| 亚洲性夜色噜噜噜7777| 亚洲国产日韩欧美一区二区三区| 国产喷白浆一区二区三区| 99国产精品国产精品毛片| 亚洲国产清纯| 久久这里只有精品视频首页| 久久久久久久久久看片| 国产目拍亚洲精品99久久精品| 亚洲国产天堂网精品网站| 精品电影在线观看| 新狼窝色av性久久久久久| 亚洲一区三区视频在线观看| 欧美插天视频在线播放| 牛牛国产精品| 尤物网精品视频| 久久久精品性| 久久久久久穴| 黑人极品videos精品欧美裸| 欧美影院精品一区| 欧美在线视频观看免费网站| 国产精品一区二区在线观看网站| 一区二区久久久久久| 亚洲小少妇裸体bbw| 欧美三级黄美女| 亚洲午夜精品视频| 欧美一级视频精品观看| 国产视频一区二区三区在线观看| 午夜视频在线观看一区二区三区| 久久精精品视频| 尤物精品国产第一福利三区| 免费在线播放第一区高清av| 亚洲国产精品www| 亚洲五月六月| 国产一区二区三区久久悠悠色av| 久久久亚洲影院你懂的| 亚洲激情在线视频| 亚洲一区三区电影在线观看| 国产精品尤物福利片在线观看| 欧美亚洲日本国产| 欧美成人国产| 亚洲午夜精品| 国产中文一区| 免费欧美日韩| 亚洲永久字幕| 欧美国产在线观看| 亚洲一二三区精品| 国模叶桐国产精品一区| 欧美va亚洲va国产综合| 亚洲午夜91| 欧美高清视频在线播放| 99国产精品私拍| 国模私拍视频一区| 欧美人与性动交cc0o| 午夜亚洲精品| 亚洲精品一区中文| 久久久久久久久久看片| 日韩一级网站| 国内偷自视频区视频综合| 欧美精彩视频一区二区三区| 午夜精品久久99蜜桃的功能介绍| 欧美成在线观看| 久久精品国产精品亚洲精品| 亚洲人成啪啪网站| 国产亚洲人成a一在线v站 | 国产综合久久| 欧美日韩国产一区二区三区地区 | 一本色道综合亚洲| 久久伊人亚洲| 香蕉久久夜色精品国产| 亚洲三级影片| 国产在线高清精品| 亚洲在线一区二区| 亚洲电影免费观看高清完整版在线| 亚洲欧美日韩在线高清直播| 亚洲精品乱码久久久久久| 国产香蕉97碰碰久久人人| 欧美国产日韩在线| 久久久久www| 欧美一区二视频| 亚洲免费婷婷| 一区二区高清在线观看| 亚洲人成在线播放|