• <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
             
                 摘要: 國慶7天容易無聊,于是我打算實現(xiàn)一下以前失敗過的一種語言的特性:類型推導(dǎo)。于是順便做一做惰性計算吧。于是我嘗試設(shè)計了一門特性盡可能少的語言,并且強制讓一個函數(shù)的返回值僅跟輸入的參數(shù)有關(guān)。雖然這個特性不適合用來做IO,但是是有辦法解決的,而且不需要修改語言就可以直接支持。

            這門語言的定義及其簡單,需要預(yù)先定義的部分也是很少的,于是我嘗試實現(xiàn)了if、邏輯運算符以及itoa和atoi兩個函數(shù)  閱讀全文
            posted @ 2008-09-28 07:14 陳梓瀚(vczh) 閱讀(2150) | 評論 (4)編輯 收藏
                 摘要: 經(jīng)過三個小時的努力,一個供調(diào)試用的模擬器終于做出來了。對于一份語法說明來講,我們需要提供調(diào)試器,一直到調(diào)試完了才生成代碼,這樣比較容易找到問題。同時為了驗證自己的那個設(shè)計,于是做了一個調(diào)試器出來。這個調(diào)試器使用了這篇文章里的數(shù)據(jù)結(jié)構(gòu)文件以及文法文件,以及使用了這篇文章里開發(fā)的一個樹到圖的轉(zhuǎn)換程序,成功得到結(jié)果!  閱讀全文
            posted @ 2008-09-14 07:22 陳梓瀚(vczh) 閱讀(1838) | 評論 (1)編輯 收藏
                 摘要: 除了錯誤處理文件還沒有定義好以外,現(xiàn)在語法定義跟語法樹的數(shù)據(jù)結(jié)構(gòu)定義以及分析器都完成了!有了這兩個文件,我的工具就可以替你生成一個函數(shù)和一堆類,讓你使用這個函數(shù)就可以將一份代碼轉(zhuǎn)換為一顆語法樹啦。娃哈哈……

            現(xiàn)在讓我們來看一個例子  閱讀全文
            posted @ 2008-09-14 00:53 陳梓瀚(vczh) 閱讀(1424) | 評論 (3)編輯 收藏
                為了生成編譯器的代碼,對語法樹的數(shù)據(jù)結(jié)構(gòu)進行定義是必不可少的一項工作。在這里我設(shè)計了一套用于生成C++代碼的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)定義文件的格式。

                這份定義支持enum、class和typedef三種命名方法,支持基本類型、C++類型、列表、映射、指針以及智能指針等。因為結(jié)構(gòu)簡單,所以我直接貼一份示例出來。這份示例用于代表這篇文章里的科學(xué)計算器表達式文法對應(yīng)的語法樹的結(jié)構(gòu)。Expression本應(yīng)是空的,為了對上述的例子進行說明,所以那些沒用上的功能就全部加在Expression里面了。

             1 enum BinopType
             2 {
             3   Plus
             4   Minus
             5   Mul
             6   Div
             7 }
             8 enum SinopType
             9 {
            10   Negative
            11 }
            12 
            13 class Expression
            14 {
            15   list<int>    IntList
            16   map<string,int> IntMap
            17   Expression^    Autoptr
            18   Expression*    Pointer
            19   "CustomType"    Custom
            20 }
            21 typedef Expression^ ExpPtr
            22 class Number
            23 {
            24   double    Number
            25 }
            26 class Binop
            27 {
            28   BinopType    Operator
            29   ExpPtr    LeftOp
            30   ExpPtr    RightOp
            31 }
            32 class Sinop
            33 {
            34   SinopType    Operator
            35   ExpPtr    Operand
            36 }

                列表、映射和智能指針在Vczh Library++ 2.0里都有對應(yīng)的工具來表達,將來生成的編譯器的代碼數(shù)據(jù)結(jié)構(gòu)將依賴于Vczh Library++ 2.0,而語法分析部分則直接使用庫中的Syngram。
            posted @ 2008-09-12 05:49 陳梓瀚(vczh) 閱讀(1228) | 評論 (0)編輯 收藏
                 摘要: 『啊,蔥爆羊肉真是香啊?!灰贿吇貞浿@個令人感動的美食,一邊心不在焉地寫了個程序。這個小程序?qū)崿F(xiàn)了一個很簡單的功能,將一棵樹轉(zhuǎn)換成bmp圖片并自動排版。  閱讀全文
            posted @ 2008-09-07 04:18 陳梓瀚(vczh) 閱讀(2878) | 評論 (3)編輯 收藏
                 摘要: 我們知道Yacc和Bison都是產(chǎn)生C++的代碼作為編譯器的前端的。但是有時候我們需要動態(tài)地產(chǎn)生一個編譯器前端,極端一點講,譬如“文法調(diào)試器”。調(diào)試器總不能動態(tài)生成.y文件,讓yacc編譯,讓gcc再度編譯,然后execute,最后將程序的輸出結(jié)果讀進來。這樣就太麻煩了,于是我們需要重新寫一個生成編譯器前端的程序。  閱讀全文
            posted @ 2008-09-06 02:45 陳梓瀚(vczh) 閱讀(2297) | 評論 (3)編輯 收藏
                 摘要: 現(xiàn)在的OOP都提倡將操作與數(shù)據(jù)結(jié)構(gòu)結(jié)合在一起。為什么這里要提出將算法與數(shù)據(jù)結(jié)構(gòu)分開呢?第一個原因是一個算法可能是用來處理一組數(shù)據(jù)結(jié)構(gòu)的。第二個原因是算法并不屬于操作。我們可以借鑒訪問者模式來實現(xiàn)這個分離,但是這里有一個特別之處:我們要將訪問者模式帶給我們的那個接口實現(xiàn)得讓我們用起來很漂亮。  閱讀全文
            posted @ 2008-09-02 04:43 陳梓瀚(vczh) 閱讀(2614) | 評論 (10)編輯 收藏
                 摘要: 大概一年前曾經(jīng)用C++開發(fā)了一個可以在C++中直接寫上下文無關(guān)文法的上下文無關(guān)文法分析器。這玩意兒叫Syngram。Syngram曾經(jīng)做了兩次,第一次做成了用一個類去讀文法文件,后來不爽就改成了直接在C++里面寫的。我弄了一個叫Term的類,重載了一些操作符,于是你可以搞分支、可選、錯誤處理等復(fù)雜的文法推導(dǎo)式?,F(xiàn)在打算做一個周邊工具。  閱讀全文
            posted @ 2008-08-27 05:11 陳梓瀚(vczh) 閱讀(1861) | 評論 (5)編輯 收藏
                 摘要: GUI Preview Demo完成!代碼結(jié)構(gòu)、下載以及注意事項內(nèi)詳。  閱讀全文
            posted @ 2008-08-25 04:17 陳梓瀚(vczh) 閱讀(20304) | 評論 (18)編輯 收藏
                 摘要: 為了展示Vczh Library++2.0中GUI Framework的強大威力,我制作了一個Regular Expression Debugger。這個軟件可以用來調(diào)試正則表達式,主要用于檢查正則表達式語法、觀察表達式的語法樹以及各種狀態(tài)機、還有匹配測試等。這個Demo已經(jīng)接近完成。GUI Framework和Demo的代碼將在Demo徹底完成的時候放上來。下面貼圖和創(chuàng)建界面的代碼:  閱讀全文
            posted @ 2008-08-23 23:18 陳梓瀚(vczh) 閱讀(2096) | 評論 (6)編輯 收藏
            僅列出標題
            共35頁: First 24 25 26 27 28 29 30 31 32 Last 
            欧洲精品久久久av无码电影| 久久九九亚洲精品| 香蕉久久AⅤ一区二区三区| 久久久久久久久久免免费精品 | 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲精品乱码久久久久久自慰| 国产精品一区二区久久精品涩爱 | 精品免费tv久久久久久久| 国产高清美女一级a毛片久久w| 香蕉久久AⅤ一区二区三区| 久久天天躁狠狠躁夜夜网站 | 久久久久久午夜成人影院| 久久国产免费直播| 欧洲精品久久久av无码电影| 亚洲国产成人久久精品影视 | 99久久国产主播综合精品| 久久人人爽人人人人爽AV| 国产精品久久精品| 久久精品免费全国观看国产| 久久国产精品-久久精品| 一级做a爰片久久毛片免费陪| 久久精品国产亚洲AV麻豆网站| 婷婷久久综合| 久久久WWW免费人成精品| 久久婷婷国产麻豆91天堂| 久久精品国产乱子伦| 久久免费国产精品| 久久精品成人一区二区三区| 97r久久精品国产99国产精| 一本一本久久aa综合精品| 亚洲精品NV久久久久久久久久| 国内精品久久久久影院日本| 狠狠精品久久久无码中文字幕| 国产精品va久久久久久久| 久久er国产精品免费观看2| 久久亚洲国产成人精品性色 | 日本精品久久久久中文字幕| 人妻久久久一区二区三区| 久久99久国产麻精品66| 久久久国产打桩机| 一本一本久久A久久综合精品|