流逝的时光
总有一天我们都会离去 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 清風 阅读(1091) 评论(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 | 清源游民
人家的地盘,想写什么写什么,想放哪放哪,也没有谁逼你看啊,白看了不说,还说质量不高,无耻啊,无耻。  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理