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

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

    結(jié)果分成兩部分,第一部分是格式化后的代碼,第二部分是符號表。
  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
很贊呀。

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

還是很不錯的,全部變量的關(guān)系,作用域一目了然。  回復(fù)  更多評論
  
# re: JIT腳本引擎:基本完成CMinus的語義分析 2009-05-08 20:31 | 妞妞
一點(diǎn)看不懂,  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲视频网站在线观看| 狠狠爱www人成狠狠爱综合网| 欧美亚洲免费电影| 亚洲日本中文| 久久米奇亚洲| 亚洲欧洲av一区二区三区久久| 亚洲国产成人高清精品| 国产私拍一区| 国产麻豆91精品| 欧美视频一区在线| 欧美va亚洲va香蕉在线| 久久久久久午夜| 欧美一进一出视频| 亚洲四色影视在线观看| 亚洲精品视频免费| 欧美激情亚洲精品| 久久久噜噜噜久久中文字幕色伊伊| 亚洲一区在线免费| 亚洲婷婷国产精品电影人久久| 亚洲精品美女免费| 91久久综合亚洲鲁鲁五月天| 韩国精品在线观看| 国产一区视频在线看| 国产欧美日韩激情| 国产精品夜夜夜| 国产精品免费观看在线| 国产精品高潮呻吟久久av无限| 欧美日韩成人| 欧美日本韩国| 欧美日韩国语| 欧美日韩一区二区三区高清| 欧美精品系列| 欧美色精品在线视频| 欧美日韩免费精品| 欧美日韩精品在线| 欧美日本精品在线| 欧美日韩四区| 国产精品v亚洲精品v日韩精品| 欧美午夜片在线观看| 国产精品毛片va一区二区三区| 国产精品久久国产精麻豆99网站| 欧美亚洲成人精品| 国产欧美精品久久| 国产深夜精品| 伊人精品视频| 亚洲全部视频| 一区二区三区毛片| 亚洲欧美日本视频在线观看| 午夜精品一区二区三区电影天堂| 欧美一区二区三区男人的天堂| 欧美一区二区三区在线免费观看| 久久精品成人一区二区三区 | 久久亚洲精品视频| 欧美jjzz| 欧美女人交a| 国产精品美女在线| 狠狠色狠狠色综合日日91app| 尤物九九久久国产精品的分类| 亚洲娇小video精品| 99综合视频| 欧美一区网站| 欧美成人嫩草网站| 日韩亚洲在线观看| 欧美亚洲在线播放| 欧美不卡高清| 国产乱码精品一区二区三区五月婷 | 久久激情五月激情| 久久永久免费| 国产欧美日韩三级| 国产午夜精品麻豆| 91久久综合| 香蕉成人伊视频在线观看| 久久久久久国产精品mv| 亚洲第一页自拍| 亚洲视频每日更新| 久久免费午夜影院| 国产精品v日韩精品v欧美精品网站| 国产日韩欧美黄色| 亚洲精品一区二区在线| 欧美亚洲午夜视频在线观看| 欧美jizzhd精品欧美喷水 | 一本综合精品| 另类春色校园亚洲| 亚洲网站视频| 蜜臀91精品一区二区三区| 欧美视频不卡| 亚洲精品国产系列| 久久精品一区二区三区四区| 亚洲欧洲精品一区二区| 欧美一级久久久| 欧美日韩三级| 亚洲国产精品一区二区尤物区| 欧美一区二区免费视频| 亚洲精品三级| 久久精品99无色码中文字幕| 欧美视频你懂的| 亚洲黄色在线| 久久综合中文字幕| 亚洲午夜在线| 欧美日韩一区在线播放| 亚洲大胆美女视频| 欧美主播一区二区三区| 日韩视频一区二区| 另类av导航| 尤物九九久久国产精品的分类| 欧美一区二区三区婷婷月色 | 一本色道久久加勒比精品| 另类国产ts人妖高潮视频| 亚洲图片欧美一区| 欧美日韩在线一区二区三区| 亚洲黄色在线看| 美日韩丰满少妇在线观看| 亚洲欧美综合国产精品一区| 欧美日韩视频在线一区二区观看视频| 亚洲成人原创| 免费成人av| 久久色在线观看| 精品二区久久| 免费成人黄色片| 久久久亚洲高清| 在线成人性视频| 美女福利精品视频| 久久青草久久| 亚洲第一区中文99精品| 欧美波霸影院| 每日更新成人在线视频| 激情五月婷婷综合| 久久综合亚州| 久久婷婷国产综合尤物精品| 在线观看亚洲精品| 欧美成人高清视频| 裸体丰满少妇做受久久99精品 | 欧美一级艳片视频免费观看| 亚洲一区久久久| 国产区亚洲区欧美区| 久久久久99精品国产片| 久久国产精品99国产精| 国产一区二区视频在线观看| 久久夜色精品国产噜噜av| 久久久精彩视频| 亚洲黄色成人久久久| 亚洲精品少妇网址| 国产精品乱码久久久久久| 欧美一区二区三区免费大片| 久久国产精品第一页| 亚洲国产精彩中文乱码av在线播放| 欧美成人精品激情在线观看 | 亚洲欧美国产日韩中文字幕| 午夜视频在线观看一区| 激情小说另类小说亚洲欧美| 亚洲成人资源| 欧美三级在线| 久久精品国产99| 老司机免费视频久久| 一区二区三区偷拍| 午夜精品福利在线观看| 亚洲福利专区| 99av国产精品欲麻豆| 国产精品啊v在线| 亚洲手机在线| 亚洲欧美在线磁力| 极品少妇一区二区三区| 亚洲国产合集| 国产精品www.| 久久久久久久精| 久久久久久久久久久久久女国产乱 | 午夜伦欧美伦电影理论片| 久久精品亚洲精品| 亚洲欧洲三级| 99视频有精品| 国产日韩欧美中文| 老司机一区二区| 欧美日韩免费高清一区色橹橹| 香蕉久久夜色精品国产使用方法| 久久国产66| 亚洲天堂免费观看| 欧美中文在线观看| 亚洲精品国产精品国自产观看浪潮| 一区二区精品在线| 国产综合久久| 亚洲日本乱码在线观看| 国产精品爽爽爽| 亚洲国产精品一区二区www| 国产精品国产馆在线真实露脸| 午夜精品久久一牛影视| 久久久久久久久岛国免费| 亚洲永久在线| 久久久精品国产99久久精品芒果| 亚洲美女精品一区| 久久久激情视频| 亚洲一区观看| 美女精品网站| 久久99在线观看| 欧美日本韩国一区| 久久久久网址| 欧美日韩国产综合视频在线观看中文| 久久综合久久综合久久| 欧美无砖砖区免费| 欧美www视频在线观看| 国产一在线精品一区在线观看|