• <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ù)  更多評論
              
            人妻中文久久久久| 亚洲国产精久久久久久久| 久久最新精品国产| 久久精品亚洲福利| 狠狠综合久久综合88亚洲| 久久国产亚洲精品麻豆| 精品久久久久久中文字幕大豆网| 伊人色综合久久| 99精品国产免费久久久久久下载| 伊人色综合久久天天| 国产精品久久久久免费a∨| 精品久久久久久| 欧美亚洲国产精品久久| 久久99精品九九九久久婷婷| 青青青伊人色综合久久| 久久中文字幕人妻熟av女| 色综合色天天久久婷婷基地| 亚洲va中文字幕无码久久| 99久久免费国产精品特黄| 国産精品久久久久久久| 精品久久久噜噜噜久久久 | 人妻无码精品久久亚瑟影视| 国产成人综合久久综合| 久久精品国产免费一区| 久久精品中文騷妇女内射| 伊人久久大香线蕉av一区| 亚洲欧洲久久av| 国产A三级久久精品| 午夜精品久久影院蜜桃| 久久99精品久久久久久齐齐| 久久99国产亚洲高清观看首页 | 久久久久国色AV免费看图片| 精品一区二区久久久久久久网站| 久久夜色精品国产噜噜亚洲AV| 国产成人久久精品激情| 色婷婷综合久久久久中文一区二区 | 97久久国产综合精品女不卡| 久久久久亚洲AV无码观看 | 国产精品久久毛片完整版| 狠狠色丁香婷综合久久| 久久综合久久综合久久|