• <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>
            隨筆-341  評論-2670  文章-0  trackbacks-0
                花了差不多兩個星期的時間將一個可配置語法分析器(Combinator)寫好了。這個語法分析器被設計來完成以下任務:

                1、易于使用,并且在運行時可更改
                2、提供對分析字符串和容器的支持
                3、可使用正則表達式輔助定義分析器
                4、如果覺得預定義的設備不滿意,用戶可以自行提供新的文法元素(譬如說增加一種使用通配符進行語法分析的元素)
                5、提供可配置錯誤恢復策略,提供合理的錯誤發生位置信息,用戶可根據自己的意愿來決定錯誤信息的內容。

                不過直接寫這玩意兒怎么開發出來的比較枯燥,所以這里我準備了一個Demo,也是我自己正在使用的,FpMacro。

                FpMacro跟C++的宏差不多,不過主要區別是,宏本身再也不被當成字符串替換的工具,而是一個生成字符串的函數。于是你可以將一個宏當成函數指針傳進另一個宏,形成高級的功能。舉個例子:

            1 $$define $TEMPLATE_ITEM($index) typename T$index
            2 $$define $TEMPLATE_LIST($count) $loopsep($count,0,$TEMPLATE_ITEM,$(,))
            3 $TEMPLATE_LIST(3)
                上面的FpMacro代碼將產生“typename T0,typename T1,typename T2”。使用FpMacro再也不需要任何C++宏里面的惡心技巧(譬如為了讓兩段代碼得以鏈接你需要雙重包裝,類似#define _(X) __(X) ; #define __(X) #X),再也不需要為循環產生代碼費心思,再也不用考慮宏的替換順序,一切都變得井然有序。

                FpMacro是可配置語法分析器的Demo,然而Function.f.fpm(這是一個在以后會上傳的FpMacro代碼文件)則是FpMacro的Demo。Function.f.fpm產生了一段支持0-10個參數的functor、參數綁定和函數組合的代碼,可以認為functor跟tr1::function的功能基本一致。通過這個例子可以更加形象地體會FpMacro的高級功能。在接下來的系列文章中,我將會通過分析FpMacro,將FpMacro的運行過程詳細剖析,讓大家明白可配置語法分析器每一個設計細節的原因,并告訴大家如何實現可配置語法分析器。
            posted on 2009-11-27 10:01 陳梓瀚(vczh) 閱讀(3122) 評論(2)  編輯 收藏 引用 所屬分類: VL++3.0開發紀事

            評論:
            # re: Vczh Library++3.0之可配置語法分析器(前言) 2009-11-27 21:12 | CornerZhang
            什么時候提供源碼,觀摩下啊!  回復  更多評論
              
            # re: Vczh Library++3.0之可配置語法分析器(前言) 2009-11-27 21:26 | 陳梓瀚(vczh)
            @CornerZhang
            接下來我會寫一系列文章描寫開發的過程,最后一篇會有代碼,而且是VS2008能編譯的。  回復  更多評論
              
            77777亚洲午夜久久多喷| 丁香五月综合久久激情| 久久精品一区二区三区AV| 人妻精品久久久久中文字幕69| 伊人久久综合成人网| 99久久免费国产特黄| 很黄很污的网站久久mimi色| 色综合久久夜色精品国产| 久久综合久久自在自线精品自| 国产人久久人人人人爽| 热综合一本伊人久久精品| 亚洲AV无一区二区三区久久| 99久久精品国产毛片| 亚洲欧美日韩中文久久| 国产成人精品久久亚洲高清不卡 | 噜噜噜色噜噜噜久久| 91精品国产91久久久久久青草| 久久亚洲精品国产亚洲老地址 | 中文字幕久久精品无码| 国产精品免费看久久久香蕉| 久久影院综合精品| 久久久亚洲AV波多野结衣| 国产成人综合久久久久久| 精品国产乱码久久久久久郑州公司| 九九热久久免费视频| 99久久亚洲综合精品成人| 精品无码久久久久久尤物| 亚洲乱码精品久久久久..| 中文字幕久久精品无码| 久久精品综合网| 伊人久久大香线蕉AV一区二区| 久久精品国产一区二区三区不卡| 国产精品视频久久久| 国产V亚洲V天堂无码久久久| 少妇精品久久久一区二区三区| 久久精品国产亚洲AV不卡| 精品国产乱码久久久久久呢| 亚洲综合伊人久久综合| 久久久久亚洲AV无码专区体验| 三上悠亚久久精品| 波多野结衣中文字幕久久|