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

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

              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

            運(yùn)行結(jié)果:
            posted on 2009-03-18 22:32 清風(fēng) 閱讀(1340) 評論(10)  編輯 收藏 引用 所屬分類: LuckyScript

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

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

            總上所述, 如果博主認(rèn)為本文滿足“分享知識給喜歡思考并研究的人”,請重新發(fā)布到首頁吧. 我個(gè)人仍然堅(jiān)持以前的看法.  回復(fù)  更多評論
              
            # re: luckyScript測試程序:計(jì)算器
            2009-03-20 15:15 | Kevin Lynx
            單就這篇博文而言,除了展示了段腳本代碼外,沒什么有用的東西。我同意cppexplore的說法
              回復(fù)  更多評論
              
            # re: luckyScript測試程序:計(jì)算器[未登錄]
            2009-03-25 21:55 | 清源游民
            人家的地盤,想寫什么寫什么,想放哪放哪,也沒有誰逼你看啊,白看了不說,還說質(zhì)量不高,無恥啊,無恥。  回復(fù)  更多評論
              
            7777精品伊人久久久大香线蕉 | 国产精品久久久天天影视香蕉 | 漂亮人妻被黑人久久精品| 久久人人爽人人爽人人片AV麻豆 | 久久综合九色综合久99| 久久综合狠狠综合久久激情 | 狠狠色婷婷综合天天久久丁香 | 国内精品久久久久久野外| 精品少妇人妻av无码久久| 久久久婷婷五月亚洲97号色| 人妻久久久一区二区三区| 久久香蕉超碰97国产精品| 久久久久人妻一区二区三区vr| 久久综合给合久久狠狠狠97色69| 99久久精品免费看国产一区二区三区| 久久久www免费人成精品| 国产色综合久久无码有码| 久久久久99精品成人片欧美| 久久综合狠狠综合久久综合88| 久久人人爽人人爽人人AV| 91精品国产高清91久久久久久| 久久久久免费精品国产| 久久se精品一区精品二区国产| 午夜视频久久久久一区 | 2021最新久久久视精品爱| 亚洲精品无码久久久影院相关影片| 久久精品国产亚洲AV影院| 亚洲精品乱码久久久久久蜜桃图片 | 亚洲七七久久精品中文国产| 亚洲精品无码久久久久久| 国产美女久久精品香蕉69| 九九久久精品无码专区| 波多野结衣久久精品| 久久精品国产网红主播| 久久精品国产福利国产琪琪 | 国产A三级久久精品| 久久精品国产99国产电影网 | 伊人色综合九久久天天蜜桃| 久久久久女人精品毛片| 国产免费久久精品丫丫| 77777亚洲午夜久久多人|