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

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

              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) 閱讀(1353) 評(píng)論(10)  編輯 收藏 引用 所屬分類: LuckyScript

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

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

            總上所述, 如果博主認(rèn)為本文滿足“分享知識(shí)給喜歡思考并研究的人”,請(qǐng)重新發(fā)布到首頁(yè)吧. 我個(gè)人仍然堅(jiān)持以前的看法.  回復(fù)  更多評(píng)論
              
            # re: luckyScript測(cè)試程序:計(jì)算器
            2009-03-20 15:15 | Kevin Lynx
            單就這篇博文而言,除了展示了段腳本代碼外,沒(méi)什么有用的東西。我同意cppexplore的說(shuō)法
              回復(fù)  更多評(píng)論
              
            # re: luckyScript測(cè)試程序:計(jì)算器[未登錄](méi)
            2009-03-25 21:55 | 清源游民
            人家的地盤(pán),想寫(xiě)什么寫(xiě)什么,想放哪放哪,也沒(méi)有誰(shuí)逼你看啊,白看了不說(shuō),還說(shuō)質(zhì)量不高,無(wú)恥啊,無(wú)恥。  回復(fù)  更多評(píng)論
              
            久久久免费精品re6| 久久人人爽人人爽人人片AV不 | 久久人妻少妇嫩草AV无码专区| 久久精品国产久精国产一老狼| 亚洲αv久久久噜噜噜噜噜| 久久99国产精一区二区三区| 婷婷久久精品国产| 日产精品久久久一区二区| 天天久久狠狠色综合| 久久久久久久波多野结衣高潮| 久久这里只有精品久久| 欧美久久久久久| 国产叼嘿久久精品久久| 国产精品久久久久久影院| 99精品久久久久久久婷婷| 国产成人香蕉久久久久| av午夜福利一片免费看久久| 色播久久人人爽人人爽人人片AV| 国产精品久久久久影院嫩草| 久久精品中文无码资源站| 久久天天躁狠狠躁夜夜不卡| 国产精品久久久久久影院 | 亚洲国产精品久久66| 人妻无码αv中文字幕久久| 香蕉久久久久久狠狠色| 激情综合色综合久久综合| 久久91精品综合国产首页| 国产成人无码精品久久久免费| 日本道色综合久久影院| 狠狠色噜噜狠狠狠狠狠色综合久久| 亚洲女久久久噜噜噜熟女| 久久久久久久综合狠狠综合| 亚洲国产成人久久笫一页| 久久一区二区免费播放| 久久夜色精品国产亚洲| 久久久高清免费视频| 一本久久知道综合久久| 无码专区久久综合久中文字幕| 人妻精品久久无码区| 97久久久久人妻精品专区| 久久国产精品99精品国产987|