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

隨筆-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) 閱讀(3054) 評論(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>
            夜夜嗨一区二区三区| 久久九九99| 亚洲另类春色国产| 久久九九久精品国产免费直播| 国产精品久久久久9999吃药| 在线一区二区视频| 亚洲在线播放| 激情成人中文字幕| 欧美激情一级片一区二区| 女女同性女同一区二区三区91| 亚洲区欧美区| 一区二区三区高清视频在线观看| 欧美三级电影一区| 欧美一区二区三区视频在线观看| 欧美一区二区三区免费视频| 国产在线乱码一区二区三区| 欧美在线观看日本一区| 久久黄色影院| 亚洲美女免费视频| 亚洲视频免费在线观看| 国产嫩草一区二区三区在线观看 | 久久综合九色综合久99| 麻豆乱码国产一区二区三区| 亚洲精品在线免费观看视频| 在线综合亚洲欧美在线视频| 国产区在线观看成人精品| 欧美成人自拍视频| 欧美亚洲第一区| 欧美~级网站不卡| 欧美日韩免费看| 久久免费视频一区| 欧美日韩在线一二三| 久久久噜噜噜久久| 欧美日韩亚洲一区三区| 久久久99久久精品女同性| 欧美国产日韩一二三区| 欧美中文字幕在线观看| 欧美高清视频在线观看| 欧美一区二区三区四区夜夜大片 | 欧美母乳在线| 老巨人导航500精品| 欧美三级电影精品| 欧美国产精品一区| 国产精品视频99| 亚洲精品一二三区| 亚洲电影免费观看高清完整版在线 | 永久免费毛片在线播放不卡| 亚洲视频999| 亚洲欧洲在线看| 久久久99爱| 久久精品99久久香蕉国产色戒| 欧美日韩三级电影在线| 欧美a一区二区| 国产日韩欧美在线| 亚洲一区二区三区激情| 日韩视频在线你懂得| 久久亚洲精品网站| 久久亚洲风情| 国产一区二区三区免费在线观看| 亚洲人体大胆视频| 樱花yy私人影院亚洲| 久久爱www.| 久久中文字幕导航| 好看的日韩视频| 欧美一区三区三区高中清蜜桃| 亚洲综合国产精品| 欧美日韩亚洲一区二区三区四区| 亚洲高清一二三区| 亚洲精品国产品国语在线app| 久久精品国产亚洲精品| 久久激情久久| 国产视频精品免费播放| 亚洲在线免费观看| 先锋影音网一区二区| 国产精品色在线| 亚洲欧美在线另类| 久久久久综合一区二区三区| 国产亚洲欧洲| 久久影院午夜片一区| 美国十次成人| 亚洲欧洲精品一区二区三区| 久热精品视频| 亚洲激情二区| 中文av一区二区| 国产精品一区二区久久| 欧美一区二区黄| 免费成人性网站| 亚洲高清久久久| 欧美日本在线| 亚洲免费视频网站| 久久亚洲不卡| 99热精品在线观看| 国产精品露脸自拍| 久久精品国产免费| 亚洲第一精品久久忘忧草社区| 一本在线高清不卡dvd| 国产精品激情av在线播放| 欧美一区影院| 亚洲国产精品小视频| 亚洲一级电影| 国语自产精品视频在线看| 蜜臀99久久精品久久久久久软件| 亚洲激情欧美激情| 性欧美video另类hd性玩具| 精品99一区二区| 欧美精品一区二区蜜臀亚洲| 亚洲综合视频1区| 欧美激情精品久久久六区热门 | 午夜精彩视频在线观看不卡| 美女脱光内衣内裤视频久久影院| 一本一本a久久| 国产综合色产在线精品| 欧美成人tv| 久久爱www| 一区二区久久久久久| 免费观看日韩| 香港久久久电影| 日韩天堂av| 韩国av一区二区三区在线观看 | 午夜视黄欧洲亚洲| 亚洲精品美女在线观看播放| 久久激情综合网| 亚洲永久免费av| 日韩小视频在线观看专区| 国产亚洲精品综合一区91| 欧美日韩精品在线视频| 久久综合国产精品台湾中文娱乐网| 亚洲深夜影院| 亚洲美女毛片| 最新亚洲一区| 欧美va亚洲va国产综合| 久久激情视频免费观看| 亚洲欧美精品在线| 宅男噜噜噜66一区二区66| 亚洲第一在线| 在线精品视频一区二区三四| 国产乱码精品一区二区三区忘忧草| 欧美女同在线视频| 欧美精品成人| 欧美大片免费| 久久综合一区二区| 久久久亚洲影院你懂的| 欧美在线首页| 午夜精品亚洲一区二区三区嫩草| 一本色道久久精品| 99精品久久久| 亚洲最新视频在线播放| 亚洲人成在线播放网站岛国| 亚洲激情视频网| 亚洲免费av观看| 亚洲另类自拍| 99国产精品视频免费观看一公开| 亚洲国产一区在线| 亚洲乱码一区二区| 亚洲小说欧美另类社区| 亚洲女同在线| 欧美在线高清| 久久麻豆一区二区| 巨胸喷奶水www久久久免费动漫| 久久裸体艺术| 欧美日韩999| 国产精品成人免费视频 | 久久久久久一区| 久久一区精品| 欧美欧美天天天天操| 欧美日韩一区二区三区免费| 欧美色欧美亚洲另类七区| 国产精品xvideos88| 国产日韩欧美三级| 在线播放豆国产99亚洲| 日韩视频精品在线观看| 亚洲天堂成人在线观看| 久久精品一区四区| 欧美高清在线播放| 日韩一级成人av| 午夜欧美大片免费观看 | 一区二区三区日韩在线观看| 亚洲香蕉成视频在线观看| 久久成人一区| 欧美激情在线播放| 国产欧美日韩91| 最新亚洲一区| 香蕉久久夜色精品国产使用方法| 久久久99精品免费观看不卡| 亚洲国产精品电影| 亚洲欧美日韩综合| 蜜桃伊人久久| 国产区二精品视| 日韩一级免费| 久久精品国产免费看久久精品| 亚洲成人在线网| 亚洲欧美清纯在线制服| 欧美成人高清| 国产日韩精品一区观看| 亚洲精品影视在线观看| 欧美一区二区三区免费观看| 欧美高清你懂得| 亚洲欧美综合| 国产精品国产三级国产普通话蜜臀 | 久久精彩免费视频|