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

隨筆-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 閱讀(2229) 評論(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>
            久久久久久夜| 久久久亚洲综合| 最新中文字幕亚洲| 久久久人成影片一区二区三区观看| 国产欧美日韩激情| 久久国产欧美精品| 久久久精品视频成人| 在线免费高清一区二区三区| 久久婷婷激情| 欧美ab在线视频| 亚洲午夜精品国产| 午夜精品影院| 影音先锋日韩有码| 亚洲片区在线| 国产欧美91| 免费不卡欧美自拍视频| 欧美激情精品久久久久久大尺度| 一二三区精品福利视频| 亚洲女同同性videoxma| 黄色影院成人| 99精品国产高清一区二区| 国产欧美一区二区精品性色| 农村妇女精品| 国产精品免费电影| 男人的天堂亚洲在线| 欧美日韩在线亚洲一区蜜芽| 欧美主播一区二区三区美女 久久精品人 | 欧美午夜片欧美片在线观看| 欧美影院成年免费版| 久热精品视频在线观看一区| 亚洲四色影视在线观看| 久久精品观看| 亚洲欧美视频| 美女久久网站| 欧美一区永久视频免费观看| 欧美成人tv| 久久久久久久高潮| 国产精品高潮呻吟久久| 亚洲国产精品传媒在线观看 | 亚洲专区欧美专区| 亚洲激情女人| 久久aⅴ国产欧美74aaa| 这里只有精品丝袜| 男人的天堂亚洲| 久久看片网站| 国产精品美女久久久免费| 亚洲成色www久久网站| 国产午夜精品理论片a级大结局 | 亚洲综合第一页| 欧美成人dvd在线视频| 久久精品免视看| 国产精品美女久久久久av超清| 亚洲成在线观看| 激情成人综合网| 午夜欧美电影在线观看| 亚洲综合精品四区| 欧美日韩三级视频| 亚洲国产欧洲综合997久久| 黄色成人在线观看| 欧美中文在线观看| 久久狠狠婷婷| 国产深夜精品| 亚洲在线视频观看| 亚洲欧美一区二区在线观看| 欧美视频在线视频| 亚洲区一区二| 一区二区三区高清| 欧美视频不卡| 一本一道久久综合狠狠老精东影业 | 久久人人爽国产| 麻豆精品一区二区综合av| 国际精品欧美精品| 久久久在线视频| 欧美风情在线| 亚洲精品一级| 欧美日韩在线播放一区二区| av成人毛片| 性做久久久久久| 国产日韩欧美一区二区| 欧美中文字幕在线| 另类尿喷潮videofree| 亚洲夫妻自拍| 欧美片网站免费| 在线亚洲伦理| 久久久999成人| 亚洲国产精品久久久久秋霞不卡 | 久久男人av资源网站| 亚洲成色777777女色窝| 99re成人精品视频| 国产精品女主播| 久久精品91久久久久久再现| 欧美成人tv| 中文成人激情娱乐网| 国产欧美在线观看| 可以看av的网站久久看| 亚洲免费久久| 久久国产精品久久久久久电车| 精品成人乱色一区二区| 欧美精品在线一区二区| 亚洲永久免费av| 欧美成人精品影院| 亚洲欧美综合网| 亚洲国产精品一区制服丝袜| 欧美三级视频| 久久综合导航| 亚洲一区高清| 亚洲第一福利社区| 欧美一区二区三区免费在线看| 在线播放日韩欧美| 国产精品xvideos88| 久久香蕉国产线看观看av| 在线中文字幕一区| 亚洲第一中文字幕在线观看| 亚洲欧美一区二区三区久久 | 国语自产在线不卡| 欧美啪啪成人vr| 久久久777| 亚洲视频欧美在线| 欧美激情在线有限公司| 久久精品国产999大香线蕉| 亚洲乱码国产乱码精品精| 国产有码一区二区| 国产精品久久久| 欧美日韩国产首页| 免费黄网站欧美| 欧美一区在线看| 亚洲一区精品视频| 夜夜爽www精品| 91久久精品日日躁夜夜躁国产| 久久久久在线观看| 欧美在线一二三四区| 中文久久精品| 99国产精品视频免费观看| 亚洲国产欧美日韩精品| 国产综合欧美在线看| 国产精品一区二区三区久久| 国产精品video| 欧美日韩亚洲一区二区三区在线| 欧美69wwwcom| 六月婷婷久久| 麻豆av一区二区三区| 久久久久国产成人精品亚洲午夜| 亚洲欧美日韩中文播放| 午夜精品婷婷| 欧美在线观看视频| 欧美一区二区三区免费在线看| 亚洲性夜色噜噜噜7777| 亚洲女ⅴideoshd黑人| 亚洲无线视频| 亚洲午夜在线观看视频在线| 99re6这里只有精品| 99这里只有久久精品视频| 亚洲美女视频在线观看| 国产精品99久久久久久人| 一本久道久久综合狠狠爱| 日韩视频在线免费| 亚洲天堂免费观看| 午夜欧美大尺度福利影院在线看| 欧美亚洲免费电影| 久久久久久久久久久久久久一区| 欧美怡红院视频一区二区三区| 香蕉成人伊视频在线观看| 久久久久99| 欧美成在线视频| 欧美午夜理伦三级在线观看| 国产欧美91| 在线不卡免费欧美| 99re66热这里只有精品3直播| 一本大道久久a久久精二百| 亚洲自拍高清| 久久视频精品在线| 亚洲激情另类| 亚洲综合色丁香婷婷六月图片| 羞羞答答国产精品www一本| 久久综合色一综合色88| 欧美久久久久久蜜桃| 国产欧美69| 亚洲片在线观看| 亚洲欧美日本视频在线观看| 久久这里只有精品视频首页| 91久久精品国产| 午夜欧美大尺度福利影院在线看| 久久天堂av综合合色| 欧美三级不卡| 一区免费视频| 亚洲影院一区| 欧美激情精品久久久久久蜜臀 | 免费在线播放第一区高清av| 亚洲精品国精品久久99热| 先锋资源久久| 欧美激情影院| 国内精品久久久久伊人av| 一区二区三区四区国产| 久久网站热最新地址| 一区二区三区国产在线| 久久久综合精品| 国产精品永久入口久久久| 亚洲美女在线视频| 久久五月激情| 午夜精品国产|