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

隨筆-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) 閱讀(3068) 評論(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>
            一区二区三区亚洲| 欧美激情一区二区三区全黄| 久久中文久久字幕| 久久成年人视频| 欧美日韩精品免费观看视一区二区| 久久久久久国产精品mv| 国产精品成人在线观看| 亚洲国产精品一区二区三区| 国产一区二区三区在线观看视频 | 欧美绝品在线观看成人午夜影视| 久久久天天操| 国产午夜精品久久久| 亚洲婷婷综合久久一本伊一区| 99精品国产热久久91蜜凸| 久久免费国产精品| 久久蜜桃资源一区二区老牛| 国产日产高清欧美一区二区三区| 一本久道久久综合中文字幕| 99成人精品| 欧美日本在线视频| 91久久久久久国产精品| 亚洲国产精品一区二区久| 久久久久国产精品厨房| 久久久久久9| 伊人成综合网伊人222| 久久精品一二三区| 蜜臀av一级做a爰片久久| 精品91视频| 久久亚洲一区| 亚洲国产精品久久久久婷婷884 | 欧美国产综合一区二区| 欧美第十八页| 亚洲乱码国产乱码精品精可以看 | 亚洲高清在线视频| 久久这里有精品15一区二区三区| 麻豆精品一区二区综合av | 欧美影院成人| 国产自产在线视频一区| 久久久亚洲高清| 欧美黄网免费在线观看| 日韩视频中文字幕| 国产精品国产三级国产aⅴ入口| 99国产精品久久久久久久| 亚洲制服欧美中文字幕中文字幕| 国产精品日韩在线播放| 欧美在线视频观看| 欧美国产亚洲精品久久久8v| 999亚洲国产精| 国产精品二区三区四区| 欧美在线视频播放| 亚洲福利视频网站| 亚洲一区制服诱惑| 国产综合视频| 欧美精品激情在线| 午夜在线成人av| 亚洲第一色在线| 午夜精品久久久久久久99樱桃| 国产一区二区三区免费观看| 麻豆精品精品国产自在97香蕉| 99精品久久| 国产精品成人观看视频国产奇米| 国产女同一区二区| 国语自产在线不卡| 欧美伊人精品成人久久综合97| 久久综合狠狠| 亚洲一区免费视频| 在线日韩日本国产亚洲| 欧美日韩在线直播| 久久一日本道色综合久久| 99riav国产精品| 免费成年人欧美视频| 亚洲欧美电影在线观看| 亚洲电影免费观看高清完整版在线观看 | 亚洲在线一区二区| 亚洲第一福利视频| 国产精品久久久久免费a∨大胸 | 国产精品视频一区二区三区| 久久久国产视频91| 亚洲一区二区三区精品在线| 欧美电影免费观看高清完整版| 欧美亚洲一级片| 亚洲最新合集| 亚洲精品孕妇| 亚洲风情在线资源站| 国产欧美日韩综合一区在线观看| 欧美精品1区2区| 免费在线观看成人av| 性欧美videos另类喷潮| 一区二区三区国产精品| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美一区二区高清在线观看| 99精品视频免费| 亚洲精品乱码久久久久久蜜桃91 | 国产精品香蕉在线观看| 欧美日韩精品一区| 欧美精品在线极品| 欧美国产免费| 欧美国产综合| 欧美华人在线视频| 男人插女人欧美| 免费不卡在线观看| 裸体歌舞表演一区二区| 美女诱惑黄网站一区| 久久中文欧美| 免费日韩av| 欧美电影免费观看高清完整版| 老司机成人网| 欧美成黄导航| 欧美国产在线观看| 欧美日韩免费一区| 欧美性淫爽ww久久久久无| 欧美日韩18| 欧美色精品天天在线观看视频| 欧美日产国产成人免费图片| 欧美日韩国内自拍| 欧美午夜大胆人体| 国产精品制服诱惑| 国内精品久久久| 亚洲国产片色| 一级日韩一区在线观看| 一区二区三区久久| 亚洲欧美一区二区原创| 欧美一区二区三区喷汁尤物| 久久精品一区二区三区四区| 久久这里有精品15一区二区三区| 免费亚洲电影| 亚洲人成在线影院| 亚洲视频一二三| 欧美综合第一页| 免费久久精品视频| 国产精品久久97| 黄色国产精品一区二区三区| 亚洲欧洲日本专区| 亚洲视频综合在线| 久久久亚洲人| 91久久中文字幕| 亚洲欧美99| 欧美国产日韩视频| 国产精品人人爽人人做我的可爱| 国内精品久久久| 日韩亚洲综合在线| 久久av一区二区三区漫画| 女人色偷偷aa久久天堂| 亚洲作爱视频| 久久这里只有精品视频首页| 欧美三级午夜理伦三级中文幕| 国产一区二区看久久| 亚洲免费精彩视频| 欧美专区亚洲专区| 亚洲黄色天堂| 欧美中文字幕视频在线观看| 欧美精品99| 精品91视频| 欧美一区二区三区在| 91久久国产自产拍夜夜嗨| 香蕉成人伊视频在线观看| 欧美阿v一级看视频| 国产麻豆9l精品三级站| 亚洲日本成人网| 久久久99久久精品女同性| 亚洲免费av观看| 久久亚洲一区| 狠狠色噜噜狠狠狠狠色吗综合| 一区二区欧美在线| 欧美搞黄网站| 久久久久综合| 国产欧美va欧美va香蕉在| 在线一区免费观看| 亚洲国产高清自拍| 久久夜色精品国产噜噜av| 国产精品欧美在线| 中文在线不卡| 亚洲欧洲视频| 欧美成年人网站| 亚洲国产高清一区二区三区| 欧美专区在线观看| 亚洲视频在线观看视频| 欧美精品色网| 亚洲美女在线视频| 欧美国产精品劲爆| 蜜桃av综合| 尤物yw午夜国产精品视频明星 | 洋洋av久久久久久久一区| 欧美激情亚洲| 亚洲裸体在线观看| 亚洲成人中文| 你懂的视频一区二区| 亚洲电影毛片| 亚洲第一中文字幕| 美女久久一区| 亚洲人被黑人高潮完整版| 亚洲大片在线观看| 欧美激情网友自拍| 一本久久综合| 99re66热这里只有精品3直播 | 一区二区在线免费观看| 久久综合激情| 欧美va天堂va视频va在线| 亚洲三级国产| 亚洲精品中文字|