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

隨筆-91  評論-137  文章-0  trackbacks-0
QLanguage開源項目地址:http://qlanguage.codeplex.com

1.AST的每個節點由2個域組成,這2個域分別表示當前節點的類型和附加信息。
2.AST的每個節點包含一個指向其子節點的順序表。
3.AST的每個節點包含指向下一個節點的指針。
綜上所述我們得到AST節點的代碼:
 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     };
然后我們給出了部分枚舉來標識節點的類型:
 1         // for type
 2         enum TYPE
 3         {
 4             stNull,
 5             stDeclare,
 6             stFunction,
 7             stParamterList,
 8             stIf,
 9             stDo,
10             stExp,
11         };
最后是一棵AST的整體結構:
 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;            // 語法樹根節點
25     Stack<NAutoPtr<CSyntaxTreeNode>> SyntaxTreeStack;    // 語法樹棧
26 };

這里我們簡單的分析一下分析過程:
以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生成一個類型為exp的節點并壓入AST的語法樹棧。
2.if a被歸約生成一個類型為stIf的節點并彈出棧頂的exp節點填充到新生成的stIf節點的第一個子節點。
3.讀入then declare b as integer,integer被歸約生成一個生類型為stDeclare的節點并壓入語法樹棧。
4.declare b as integer被歸約為棧頂的stDeclare節點填充一個b標識符的子節點。
5.then declare b as integer被歸約,首先彈出棧頂的stmt_list因為這里是stDeclare說明stmt_list有內容應此將棧頂的stIf的值域的最低位置為1。
6.else子句不存在。
7.整體被歸約。
此時棧頂為stIf節點,其不包含next節點,有兩個子節點分別為stExp和stDeclare。

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

評論:
# re: QLanguage的AST 2011-07-02 10:06 | 千暮(zblc)
你畫的好屎 推薦你一款關聯畫圖軟件 XMind  回復  更多評論
  
# re: QLanguage的AST 2011-07-02 10:25 | lwch
@千暮(zblc)
Word畫出來的...  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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视频在线观看一区三区| 欧美第一黄色网| 欧美激情91| 亚洲精品在线视频| 一区二区三区高清在线观看| 一区二区三区国产在线| 亚洲欧美日韩另类| 欧美在线不卡视频| 母乳一区在线观看| 欧美日韩网站| 国产午夜精品理论片a级大结局| 国产欧美在线播放| …久久精品99久久香蕉国产| 91久久精品www人人做人人爽| 国产精品久久久久久模特| 国产精品区二区三区日本| 国产免费一区二区三区香蕉精| 激情成人综合网| 亚洲精品久久久久久下一站 | 欧美视频1区| 国产精品你懂得| 精品电影在线观看| 亚洲素人一区二区| 美女精品视频一区| 亚洲综合好骚| 欧美成人精品高清在线播放| 国产精品久久国产愉拍| 亚洲福利精品| 午夜欧美大尺度福利影院在线看| 久久一区二区精品| 99亚洲视频| 免费成人黄色片| 国产一区二区欧美| 亚洲欧美日韩一区在线观看| 欧美高清hd18日本| 欧美伊人久久| 国产精品国内视频| 日韩一区二区久久| 欧美成人中文字幕在线| 欧美一区二区三区婷婷月色| 欧美日韩免费在线| 日韩视频在线观看国产| 欧美 日韩 国产一区二区在线视频| 亚洲午夜激情| 国产精品99一区二区| 99riav1国产精品视频| 欧美1级日本1级| 久久久久91| 狠狠v欧美v日韩v亚洲ⅴ| 午夜欧美不卡精品aaaaa| 99精品视频一区| 欧美日韩和欧美的一区二区| 亚洲日本精品国产第一区| 麻豆精品传媒视频| 久久高清国产| 狠狠色综合播放一区二区| 久久国产精品99精品国产| 亚洲小说春色综合另类电影| 欧美午夜精品久久久久久浪潮| 在线视频日本亚洲性| 亚洲精品欧美专区| 欧美人与性动交cc0o| 99精品国产福利在线观看免费| 欧美激情一二区| 欧美精品一区二区三区蜜桃| 日韩视频永久免费观看| 亚洲片在线资源| 久热成人在线视频| 亚洲精品人人| 宅男在线国产精品| 久久久www成人免费毛片麻豆| 国产精品免费一区二区三区在线观看 | 亚洲自拍啪啪| 亚洲视频播放| 国产精品福利av| 久久av在线| 久久精品论坛| 亚洲精选久久| 亚洲深夜影院| 狠狠爱综合网| 亚洲高清色综合| 欧美日韩一视频区二区| 欧美一级黄色网| 久久久久久久久久久久久久一区| 亚洲国产另类久久精品| 夜夜嗨av一区二区三区网页| 国产精品美女www爽爽爽视频| 久久精品中文字幕免费mv| 午夜宅男欧美| 欧美紧缚bdsm在线视频| 亚洲精品护士| 中文精品视频| 国内自拍视频一区二区三区| 欧美福利在线| 国产精品人成在线观看免费 | 久久精品日韩| 老司机一区二区| 午夜精品美女久久久久av福利| 亚洲欧美中文日韩在线| 亚洲黄网站黄| 午夜国产精品视频| 日韩午夜av在线| 久久久999精品免费| 99视频精品全部免费在线| 西瓜成人精品人成网站| 99国产成+人+综合+亚洲欧美| 亚洲欧美成人精品| 日韩午夜激情| 久久中文久久字幕| 欧美一区激情| 欧美日韩在线播放三区四区| 欧美成年网站| 好吊妞**欧美| 午夜激情久久久| 在线亚洲伦理| 欧美激情视频在线播放| 免费试看一区| 激情欧美丁香| 欧美一区二区三区喷汁尤物| 亚洲一区二区三区精品视频| 亚洲福利免费| 韩曰欧美视频免费观看| 99国产精品久久久| 亚洲三级视频| 老司机成人在线视频| 欧美一级片久久久久久久| 欧美剧在线观看| 亚洲高清视频在线观看| 国模大胆一区二区三区| 午夜精品999| 欧美一区二区成人| 国产精品专区h在线观看| 一区二区三区回区在观看免费视频| 一区二区免费在线播放| 欧美精品粉嫩高潮一区二区| 亚洲第一区在线观看| 亚洲国产精品欧美一二99| 狂野欧美一区| 亚洲国产精品免费| 99av国产精品欲麻豆| 欧美久久久久久| 一区二区三区视频在线观看| 亚洲在线视频网站| 国产伦精品一区二区三区照片91| 亚洲一区二区三区高清不卡| 欧美一级理论片| 国内自拍一区| 欧美成人精品一区二区三区| 亚洲国产清纯| 亚洲免费视频网站| 国产一区二区主播在线| 久久精品人人做人人爽| 亚洲春色另类小说| 亚洲视频欧洲视频| 国产一区二区电影在线观看| 可以看av的网站久久看| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲欧美国产77777| 国产亚洲美州欧州综合国| 久久久中精品2020中文| 亚洲欧洲一二三| 欧美一级视频一区二区| 在线播放中文一区| 欧美日韩精品二区第二页| 亚洲一区二区三区精品视频| 久久综合五月| 在线一区亚洲| 国产在线日韩| 欧美日韩网址| 久久免费少妇高潮久久精品99| 亚洲国产精品专区久久| 先锋影音网一区二区| 亚洲国产婷婷| 国产精一区二区三区| 欧美成人黑人xx视频免费观看 | 欧美亚洲一区二区在线观看| 免费日韩av| 欧美在线日韩在线| 亚洲精品在线看| 狠狠色丁香久久婷婷综合_中| 欧美精品在线视频| 久久久久看片| 亚洲在线视频| 91久久精品国产| 蜜臀99久久精品久久久久久软件| 亚洲免费小视频| 一区二区av| 好吊色欧美一区二区三区四区| 国产精品高清一区二区三区| 欧美成人性生活| 久久九九国产| 亚洲视频香蕉人妖| 亚洲精品免费电影| 国产视频一区在线观看| 欧美极品色图| 麻豆乱码国产一区二区三区| 亚洲欧美视频在线| 亚洲一区二区三区在线|