• <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>
            流逝的時光
            總有一天我們都會離去 email: zzxhang@gmail.com
            posts - 21,comments - 111,trackbacks - 0

               今天用luckyScript寫了一個簡單的計算器作為測試程序,100多行代碼,一開始還是不敢寫過長的測試代碼,不然恐怕會被BUG壓死,有朋友問我寫好后會不會開源,我得坦承地告訴各位,由于一開始考慮不周,代碼的結構設計得并不好,到后期為了加上一些特性,寫了很多脫離框架的代碼,因此,結構整體上比較混亂,再加上本人沒有寫注釋的習慣,實在沒有開源的勇氣,怕誤人子弟。以后2.0版本應該會對代碼進行一次重構,到時才會考慮開源。
              網上也有很多優秀的開源腳本引擎,有心想學習腳本引擎的朋友可以去搜來看下。

              1class Counter
              2{
              3protected:
              4    func isNum(var str)
              5    {
              6        return (str >= "0"&& (str <= "9");
              7    }

              8
              9    func isOp(var str)
             10    {
             11        return (str == "*"|| (str == "/"|| (str == "+"|| (str == "-"|| (str == "%");
             12    }

             13
             14    func isSpace(var str)
             15    {
             16        return (str == " " || str == "\t" || str == "\n");
             17    }

             18    
             19public:
             20    func getResult(var op)
             21    {
             22        if(! isOp(op))
             23        {
             24            print("inlegal operator!");
             25            newLine();
             26            return -1;
             27        }

             28        
             29        var result = 0;
             30        if(op == "+")
             31        {
             32            result = mLeftOp + mRightOp;
             33        }

             34        else if(op == "-")
             35        {
             36            result = mLeftOp - mRightOp;
             37        }

             38        else if(op == "*")
             39        {
             40            result = mLeftOp * mRightOp;
             41        }

             42        else if(op == "%")
             43        {
             44            result = mLeftOp % mRightOp;
             45        }

             46        else
             47        {
             48            result = mLeftOp / mRightOp;
             49        }

             50        
             51        return result;
             52    }

             53    
             54    func setOp(var lOp,var rOp)
             55    {
             56        if((! isNum(lOp)) || (! isNum(rOp)))
             57        {
             58            print("inlegal operator!");
             59            newLine();
             60        }

             61        else
             62        {
             63            var lValue = atoi(lOp);
             64            var rValue = atoi(rOp);
             65            mLeftOp = lValue;
             66            mRightOp = rValue;
             67        }

             68    }

             69
             70private:
             71    var mLeftOp;
             72    var mRightOp;
             73}
            ;
             74 
             75    
             76func Main()
             77{
             78    var input;
             79    var counter = new Counter();
             80    var result = "0";
             81    print("/**********************************************");
             82    newLine();
             83    print("Lucky script test programe: Calculator")
             84    newLine();
             85    print("***********************************************/");
             86    newLine();
             87    while(1)
             88    {
             89          newLine();
             90        print("Please enter operand value: ");
             91        input = getInputString();
             92        newLine();
             93        
             94        counter.setOp(result,input);
             95        
             96        print("Please enter operator,press 0 to reset,press -1 to exit: ");
             97        input = getInputString();
             98        newLine();
             99        
            100        if(input == "0")
            101        {
            102            result = "0";
            103            continue;
            104        }

            105        
            106        if(input == "-1")
            107        {
            108            break;    
            109        }

            110        
            111        result = counter.getResult(input);
            112        print("Result is: ");
            113        print(result);
            114        newLine();
            115        
            116        result = itoa(result);
            117    }

            118}

            119

            運行結果:
            posted on 2009-03-18 22:32 清風 閱讀(1329) 評論(10)  編輯 收藏 引用 所屬分類: LuckyScript

            FeedBack:
            # re: luckyScript測試程序:計算器
            2009-03-19 00:00 | 陳梓瀚(vczh)
            檢查你的腳本有沒有問題的第一個辦法是,用你的腳本寫一個四則運算分析器,從字符串到語法樹到指令到虛擬機。

            這種程序可以覆蓋大多數問題,包括語法欠缺。  回復  更多評論
              
            # re: luckyScript測試程序:計算器[未登錄]
            2009-03-19 09:15 | 清風
            @陳梓瀚(vczh)
            good idea  回復  更多評論
              
            # re: luckyScript測試程序:計算器
            2009-03-19 09:28 | cppexplore
            發首頁 純炫耀 鑒定完畢! 移除  回復  更多評論
              
            # re: luckyScript測試程序:計算器[未登錄]
            2009-03-19 10:08 | 清風
            @cppexplore
            接受你的鑒定同時進行深刻的自我反省  回復  更多評論
              
            # re: luckyScript測試程序:計算器
            2009-03-19 16:10 | 陳梓瀚(vczh)
            @cppexplore
            發首頁是為了接受盡可能多的批評,不應移除。  回復  更多評論
              
            # re: luckyScript測試程序:計算器[未登錄]
            2009-03-19 16:32 | cppexplore
            @陳梓瀚(vczh)
            1 luckyScript并未開源
            2 本文展示了用luckyScript寫的一個計算器,以及給出運行的結果貼圖證明腳本的正確性.
            3 博主并未明確說明,是來接受批評的 也未給出需要大家提出意見的方向
            4 我的理解blog是分享知識的,尤其是首頁精華,訂閱首頁文章的人 更多的是希望能獲取到知識. 如果有疑惑需要大家解答,更好的選擇是發布到論壇.  回復  更多評論
              
            # re: luckyScript測試程序:計算器
            2009-03-19 22:19 | 陳梓瀚(vczh)
            @cppexplore
            1、開源才可首頁這代表一種自私。我們共享的是思想,這是最寶貴的。
            2、這可以讓那些喜歡寫虛擬機的人從中發現他們需要的東西,并沒有義務教所有的人寫虛擬機。
            3、接受批評這句話說多了是虛偽。
            4、如果你寫過虛擬機你就會知道,觀看別人的腳本的語法也是非常重要的,這比看著別人畫幾個虛擬機的UML要強多了。這一點我有深刻體會,因為我一直都在做這方面的事情。所以,他把腳本貼出來,已經滿足“分享知識給喜歡思考并研究的人”這個要求了。  回復  更多評論
              
            # re: luckyScript測試程序:計算器
            2009-03-20 10:57 | cppexplore
            @陳梓瀚(vczh)
            其實我移出首頁的出發點,不是因為它沒開源,根本原因是我認為不能共享到任何的思想, 沒有看到可以分享的東西,當然可能是個人眼界的限制.

            總上所述, 如果博主認為本文滿足“分享知識給喜歡思考并研究的人”,請重新發布到首頁吧. 我個人仍然堅持以前的看法.  回復  更多評論
              
            # re: luckyScript測試程序:計算器
            2009-03-20 15:15 | Kevin Lynx
            單就這篇博文而言,除了展示了段腳本代碼外,沒什么有用的東西。我同意cppexplore的說法
              回復  更多評論
              
            # re: luckyScript測試程序:計算器[未登錄]
            2009-03-25 21:55 | 清源游民
            人家的地盤,想寫什么寫什么,想放哪放哪,也沒有誰逼你看啊,白看了不說,還說質量不高,無恥啊,無恥。  回復  更多評論
              
            久久久这里有精品| 91精品国产色综久久 | 狠狠色婷婷久久一区二区三区| 亚洲国产精品无码久久一线| 精品久久久久久中文字幕人妻最新| 国产欧美久久一区二区| 色播久久人人爽人人爽人人片aV| 久久人人青草97香蕉| 久久国产乱子伦精品免费强| 无码8090精品久久一区| 国产精品岛国久久久久| 18禁黄久久久AAA片| 国产精品综合久久第一页 | 久久精品国产精品青草app| 久久亚洲高清综合| 免费国产99久久久香蕉| 97精品伊人久久久大香线蕉| 精品国产91久久久久久久a| 久久精品国产亚洲AV久| 久久国产成人午夜aⅴ影院| 久久99久久99小草精品免视看| 一本色道久久88—综合亚洲精品| 久久久久久久久久免免费精品| 麻豆AV一区二区三区久久| 久久99热这里只频精品6| 国产91久久综合| 久久夜色tv网站| 国内精品久久国产大陆| 久久99久久99精品免视看动漫| 一本色道久久88精品综合 | 久久露脸国产精品| segui久久国产精品| 婷婷综合久久狠狠色99h| 国产精品久久久久jk制服| 伊人色综合久久天天人手人婷| 久久久久成人精品无码| 亚洲狠狠久久综合一区77777 | 久久超乳爆乳中文字幕| 色综合久久无码中文字幕| 久久婷婷五月综合97色一本一本| 久久亚洲sm情趣捆绑调教|