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

隨筆-91  評(píng)論-137  文章-0  trackbacks-0
QLanguage開源項(xiàng)目地址:http://qlanguage.codeplex.com

1.AST的每個(gè)節(jié)點(diǎn)由2個(gè)域組成,這2個(gè)域分別表示當(dāng)前節(jié)點(diǎn)的類型和附加信息。
2.AST的每個(gè)節(jié)點(diǎn)包含一個(gè)指向其子節(jié)點(diǎn)的順序表。
3.AST的每個(gè)節(jié)點(diǎn)包含指向下一個(gè)節(jié)點(diǎn)的指針。
綜上所述我們得到AST節(jié)點(diǎn)的代碼:
 1     class CSyntaxTreeNode
 2     {
 3     public:
 4         CSyntaxTreeNode(int _type,int _value) : type(_type),value(_value){}
 5 
 6         inline List<NAutoPtr<CSyntaxTreeNode>>& Child()
 7         {
 8             return child;
 9         }
10 
11         inline NAutoPtr<CSyntaxTreeNode> Next()
12         {
13             return next;
14         }
15 
16         inline int& Type()
17         {
18             return type;
19         }
20 
21         inline int& Value()
22         {
23             return value;
24         }
25     protected:
26         int type;
27         int value;
28         List<NAutoPtr<CSyntaxTreeNode>> child;
29         NAutoPtr<CSyntaxTreeNode> next;
30     };
然后我們給出了部分枚舉來標(biāo)識(shí)節(jié)點(diǎn)的類型:
 1         // for type
 2         enum TYPE
 3         {
 4             stNull,
 5             stDeclare,
 6             stFunction,
 7             stParamterList,
 8             stIf,
 9             stDo,
10             stExp,
11         };
最后是一棵AST的整體結(jié)構(gòu):
 1 class CParserAnalyze
 2 {
 3 public:
 4     inline void Push(NAutoPtr<CSyntaxTreeNode>& Node)
 5     {
 6         SyntaxTreeStack.Push(Node);
 7     }
 8 
 9     inline NAutoPtr<CSyntaxTreeNode> Pop()
10     {
11         return SyntaxTreeStack.Pop();
12     }
13 
14     inline NAutoPtr<CSyntaxTreeNode> Top()
15     {
16         return SyntaxTreeStack.Top();
17     }
18 
19     inline NAutoPtr<CSyntaxTreeNode> Root()
20     {
21         return SyntaxTreeRoot;
22     }
23 protected:
24     NAutoPtr<CSyntaxTreeNode> SyntaxTreeRoot;            // 語法樹根節(jié)點(diǎn)
25     Stack<NAutoPtr<CSyntaxTreeNode>> SyntaxTreeStack;    // 語法樹棧
26 };

這里我們簡(jiǎn)單的分析一下分析過程:
以if語句為例,其組合子代碼為:
1     if_desc = (str_if + exp_desc)[if_desc_first] +
2             (str_then + stmt_list)[if_desc_second] +
3             Parser_Combinator_Node::opt((str_else + stmt_list)[if_desc_third]) +
4             (str_end + str_if)[if_desc_fourth];
我們輸入代碼:
1     if a then
2         declare b as integer
3     end if
在做語法分析:
1.讀入if a,a被歸約為一條exp生成一個(gè)類型為exp的節(jié)點(diǎn)并壓入AST的語法樹棧。
2.if a被歸約生成一個(gè)類型為stIf的節(jié)點(diǎn)并彈出棧頂?shù)膃xp節(jié)點(diǎn)填充到新生成的stIf節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)。
3.讀入then declare b as integer,integer被歸約生成一個(gè)生類型為stDeclare的節(jié)點(diǎn)并壓入語法樹棧。
4.declare b as integer被歸約為棧頂?shù)膕tDeclare節(jié)點(diǎn)填充一個(gè)b標(biāo)識(shí)符的子節(jié)點(diǎn)。
5.then declare b as integer被歸約,首先彈出棧頂?shù)膕tmt_list因?yàn)檫@里是stDeclare說明stmt_list有內(nèi)容應(yīng)此將棧頂?shù)膕tIf的值域的最低位置為1。
6.else子句不存在。
7.整體被歸約。
此時(shí)棧頂為stIf節(jié)點(diǎn),其不包含next節(jié)點(diǎn),有兩個(gè)子節(jié)點(diǎn)分別為stExp和stDeclare。

分析過程如下圖:
1.
2.
3.
4.
5.
6.
7.
posted on 2011-07-01 21:51 lwch 閱讀(2223) 評(píng)論(2)  編輯 收藏 引用 所屬分類: QLanguage

評(píng)論:
# re: QLanguage的AST 2011-07-02 10:06 | 千暮(zblc)
你畫的好屎 推薦你一款關(guān)聯(lián)畫圖軟件 XMind  回復(fù)  更多評(píng)論
  
# re: QLanguage的AST 2011-07-02 10:25 | lwch
@千暮(zblc)
Word畫出來的...  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲裸体俱乐部裸体舞表演av| 亚洲日韩第九十九页| 激情一区二区三区| 亚洲欧美一区二区三区久久| 亚洲免费电影在线| 日韩视频精品在线| 一二三区精品福利视频| 国产精品日本欧美一区二区三区| 中文av一区特黄| 久久久久综合一区二区三区| 伊人久久综合97精品| 免费中文日韩| 一区二区三区四区五区精品| 久久午夜视频| 香蕉久久夜色精品| 亚洲欧洲另类国产综合| 欧美亚洲成人精品| 欧美在线亚洲在线| 亚洲成色www久久网站| av不卡免费看| 午夜精品久久久久久久99樱桃 | 亚洲精品专区| 亚洲一区精品视频| 亚洲人被黑人高潮完整版| 亚洲视频欧美在线| 亚洲精品欧美极品| 在线观看亚洲精品| 亚洲美女视频| 欧美专区日韩视频| 亚洲伊人色欲综合网| 久久久久久亚洲精品中文字幕 | 国产日韩一区欧美| 欧美另类高清视频在线| 久久九九电影| 亚洲视频图片小说| 亚洲六月丁香色婷婷综合久久| 模特精品在线| 国产精品最新自拍| 欧美三级第一页| 欧美18av| 国产欧美在线观看| 国产日韩综合| 亚洲深夜福利| 久久综合九色综合久99| 亚洲一级在线观看| 亚洲一区二区三区高清不卡| av成人激情| 亚洲免费观看高清完整版在线观看熊 | 老司机久久99久久精品播放免费| 亚洲欧美国产精品va在线观看| 亚洲精品视频中文字幕| 亚洲区一区二| 蜜臀av国产精品久久久久| 欧美精品日韩三级| 欧美日韩国产高清视频| 欧美午夜精品| 亚洲伦伦在线| 欧美成人精品一区二区| 美女任你摸久久| 久久免费黄色| 午夜亚洲视频| 亚洲午夜免费视频| 欧美日一区二区在线观看 | 欧美精品91| 日韩午夜视频在线观看| 亚洲午夜久久久久久尤物| 亚洲一区精品在线| 亚洲视频在线一区观看| 国产精品免费在线| 亚洲黄色精品| 一区二区三区国产精华| 欧美一区二区三区四区夜夜大片 | 在线成人国产| 亚洲高清色综合| 亚洲少妇中出一区| 国产精品v片在线观看不卡| 亚洲欧美日韩国产| 美女成人午夜| 裸体一区二区| 宅男噜噜噜66一区二区66| 一区二区三区av| 亚洲视频999| 亚洲视频1区| 国产在线精品成人一区二区三区 | 国产精品爽爽爽| 欧美在线视频日韩| 久久精品一区中文字幕| 亚洲韩日在线| 一区二区三区国产精品| 国产午夜精品久久久久久久| 玖玖视频精品| 午夜精品理论片| 狠狠色狠狠色综合日日小说| 亚洲午夜一区| 久久精彩免费视频| 国产精品免费aⅴ片在线观看| 亚洲欧美日韩精品久久| 久久激情综合网| 亚洲午夜伦理| 美女在线一区二区| 欧美影院在线| 欧美午夜一区二区三区免费大片| 久久久久免费视频| 欧美日韩综合在线免费观看| 免费一区二区三区| 国产欧美欧美| 99www免费人成精品| 在线欧美日韩国产| 久久青草久久| 国产精品爱久久久久久久| 玖玖综合伊人| 国产女主播视频一区二区| 亚洲黄色三级| 欧美精品免费观看二区| 久久国产88| 欧美亚男人的天堂| 亚洲国产欧美日韩精品| 欧美a级在线| 久久精品理论片| 欧美一区午夜精品| 亚洲综合不卡| 欧美区国产区| 欧美激情一区二区在线 | 国产精品区免费视频| 最新中文字幕亚洲| 亚洲高清精品中出| 亚洲欧洲一区二区三区久久| 国产一区二区高清| 免费在线成人av| 国产情侣久久| 亚洲欧美久久久| 亚洲欧美日韩在线一区| 欧美视频在线观看一区| 亚洲免费成人av| 一区二区三区.www| 欧美日韩色一区| 久久久精品免费视频| 久久久久网址| 一本色道久久88综合亚洲精品ⅰ| 久久久亚洲国产美女国产盗摄| 久久国产精品一区二区三区四区| 一区二区三区精品| 欧美大片一区二区三区| 中日韩高清电影网| 欧美久久在线| 日韩午夜中文字幕| 在线一区二区三区做爰视频网站 | 亚洲一级一区| 久久夜色精品国产欧美乱| 亚洲国产成人久久综合一区| 欧美激情aⅴ一区二区三区| 亚洲国产精品一区| 亚洲网站啪啪| 午夜精品亚洲一区二区三区嫩草| 欧美日韩一区综合| 亚洲无线一线二线三线区别av| 亚洲综合首页| 国产婷婷色一区二区三区| 久久国产精品高清| 欧美激情一区二区三区不卡| 99精品国产一区二区青青牛奶| 欧美日韩综合在线免费观看| 亚洲一区区二区| 另类激情亚洲| 亚洲视频图片小说| 国产一区二区三区日韩| 欧美成人午夜激情| 一本一本a久久| 欧美www在线| 91久久精品一区二区三区| 亚洲人午夜精品| 国产精品免费视频xxxx| 久久久最新网址| 亚洲免费av片| 久久夜色精品国产亚洲aⅴ| 亚洲美女精品成人在线视频| 国产精品亚洲一区| 蜜桃久久精品一区二区| 亚洲一区二区三区三| 嫩模写真一区二区三区三州| 亚洲天堂成人| 亚洲国产精品一区制服丝袜| 国产精品啊v在线| 欧美1级日本1级| 欧美在线观看你懂的| 亚洲欧洲在线观看| 久久久久久午夜| 亚洲欧美日本国产有色| 亚洲国产精品一区二区久| 国产欧美一区二区精品性色| 欧美激情影音先锋| 久久久久国产精品人| 亚洲一区二区三区涩| 91久久国产精品91久久性色| 久久久久久久一区二区| 亚洲女女女同性video| 99www免费人成精品| 亚洲国产精品视频| 亚洲风情在线资源站| 国产最新精品精品你懂的|