• <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)寫好了。這個語法分析器被設(shè)計來完成以下任務(wù):

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

                不過直接寫這玩意兒怎么開發(fā)出來的比較枯燥,所以這里我準(zhǔn)備了一個Demo,也是我自己正在使用的,F(xiàn)pMacro。

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

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

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

            評論:
            # re: Vczh Library++3.0之可配置語法分析器(前言) 2009-11-27 21:12 | CornerZhang
            什么時候提供源碼,觀摩下??!  回復(fù)  更多評論
              
            # re: Vczh Library++3.0之可配置語法分析器(前言) 2009-11-27 21:26 | 陳梓瀚(vczh)
            @CornerZhang
            接下來我會寫一系列文章描寫開發(fā)的過程,最后一篇會有代碼,而且是VS2008能編譯的。  回復(fù)  更多評論
              
            一本色道久久99一综合| 人妻少妇精品久久| 久久久国产乱子伦精品作者| 亚洲国产一成人久久精品| 色8久久人人97超碰香蕉987| 久久99国产精品久久久| 香蕉aa三级久久毛片| 久久久无码一区二区三区 | 久久久久国产| 7777久久久国产精品消防器材| 2020久久精品亚洲热综合一本| 国产午夜免费高清久久影院| 国内精品久久久久久久coent| 97精品依人久久久大香线蕉97| 久久精品男人影院| 色欲av伊人久久大香线蕉影院| 91超碰碰碰碰久久久久久综合| A级毛片无码久久精品免费 | 热综合一本伊人久久精品| 久久久久久亚洲精品成人| 久久久久亚洲av毛片大| 97超级碰碰碰久久久久| 少妇熟女久久综合网色欲| 久久99精品国产麻豆蜜芽| 久久亚洲精品中文字幕| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 色偷偷久久一区二区三区| 亚洲欧美成人久久综合中文网| 国产精品岛国久久久久| 国色天香久久久久久久小说 | 久久久久久亚洲精品影院| 99久久精品国产综合一区| 久久久精品2019免费观看| 亚洲日本va中文字幕久久| 7777精品伊人久久久大香线蕉 | 欧美黑人又粗又大久久久| 色8激情欧美成人久久综合电| 99久久国产综合精品成人影院| 精品精品国产自在久久高清| 午夜人妻久久久久久久久| 日韩精品久久无码人妻中文字幕|