• <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
                上一篇文章基本上把分析的過程都講完了,于是這次就把FpMacro作為一個Demo拿了出來。不第一次就發的原因主要是那個時候FpMacro剛剛寫完,當然寫完就要用的,于是后來就在Vczh Library++ 3.0的庫里面大量使用了FpMacro作為代碼生成的一個工具,用來代替一部分的宏的功能。當然最后我并沒有寫個插件安裝到VC++里,而是寫了一個批處理文件去調用FpMacro.exe。

                【點擊這里下載VL++3.0可配置語法分析器Demo:FpMacro源代碼】

                FpMacro使用常規的分析方法,首先用可配置語法分析器書寫語法,然后連接到一些語義處理函數上生成FpMacro的語法樹,最后使用語法樹生成虛擬機,然后就可以通過虛擬機來生成代碼了。FpMacro被定義為一個專門用來產生字符串結果的語言,最小語法元素自然是字符串連接了。連接兩個字符串不需要任何符號,就直接并排著寫上去就行了。

                當然這里遇到了一些小問題,譬如$loop(10,1,$xyz)和loop(10,1,$xyz)的括號和逗號的意思是不一樣的。前者括號和逗號是語法的一部分,后者括號和逗號是字符串的一部分,因此在處理函數調用的參數表達式和函數調用之外的表達式需要兩套文法。可配置語法分析器剛好解決了這個問題,因為添加一條語法的代價非常小,因此直接復制那幾行做一點小修改就行了。

                代碼結構如下:
                <Library>
                    基礎設施
                    GenerateCode.bat(要在Tools\FpMacro.exe編譯出來之后才能使用)
                    <Collections>容器和Linq的代碼
                    <Combinator>可配置語法分析器代碼
                    <Regex>正則表達式引擎代碼
                    <Stream>流系統代碼
                    <UnitTest>超級迷你實用型單元測試框架,適合單人開發實用
                <Tools>
                    FpMacro.exe(注意,要將FpMacro的release編譯之后產生的exe復制到這里)
                    <FpMacro>

                GenerateCode.bat主要用于把Function.f.fpm、Tuple.h.fpm和Event.h.fpm編譯成Function.h、Tuple.h和Event.h三個文件,然后產生三個Log文件用來記載fpm文件語法分析的結果,可以檢查是否有一些遺漏。

                接下來的文章計劃寫一寫關于如何在C++里面模擬C#Linq to Object的語法(編譯器寫多了就這樣了,FQ不要來噴)。語法是一門語言或者庫里相當重要的一個部分,直接決定了你寫代碼的時候的情緒,從而嚴重影響生產力、效率和代碼質量。
            posted on 2009-12-12 22:19 陳梓瀚(vczh) 閱讀(4935) 評論(0)  編輯 收藏 引用 所屬分類: VL++3.0開發紀事
            亚洲AV无码久久精品蜜桃| 伊人久久大香线蕉综合热线| 婷婷久久久亚洲欧洲日产国码AV| 狠狠色综合网站久久久久久久高清 | 国产亚洲色婷婷久久99精品91| 久久久久久久99精品免费观看| 久久91这里精品国产2020| 久久无码中文字幕东京热| 97超级碰碰碰久久久久| 久久精品中文字幕第23页| 性色欲网站人妻丰满中文久久不卡| AV色综合久久天堂AV色综合在| 久久精品无码一区二区app| 久久婷婷人人澡人人爽人人爱| 久久婷婷五月综合色奶水99啪| 国内精品免费久久影院| 久久久精品2019免费观看| 少妇久久久久久被弄到高潮| 性欧美大战久久久久久久久| 久久精品国产72国产精福利| 国产精品久久久久久搜索| 91麻豆国产精品91久久久| 国产午夜精品久久久久九九| 久久夜色精品国产噜噜亚洲AV| 思思久久99热免费精品6| 91精品国产91久久久久久| 天天躁日日躁狠狠久久| 欧美日韩久久中文字幕| 国内精品久久久久久麻豆| 久久国产精品国产自线拍免费| 久久精品国产亚洲AV电影| 亚洲欧洲中文日韩久久AV乱码| 91秦先生久久久久久久| 成人妇女免费播放久久久 | 97久久国产综合精品女不卡| 久久久久久一区国产精品| 久久r热这里有精品视频| 国产精品无码久久综合| 久久青青草原精品国产| 久久久无码一区二区三区| 色综合久久综合中文综合网|