用C#设计与实现一个四则算术运算解释器

今天下午用 C# 写了一个简单的四则算术解释器 (Interpreter)。该解释器主要有两个功能:一是能够进行基本的四则运算,也即加减乘除;二是能够检测输入的语法错误,对于不合法的运算指令会提示错误以及给出错误的地方。晚上于是写这篇博文把思考的过程记录下来。

按:这是以前遇到的一个微软技术面试题,当时觉得比较麻烦,要涉及到使用 树 tree 等数据结构,所以一直保留在脑海中。今天下午碰巧拿到了传说中的 Dragon Book,于是尝试自己动手写写看。

花了2个小时写的这个解释器还是比较简单的,仅仅能够做四则运算。现在还不支持括号,以及一元运算符,比如负号运算符。源代码可以在这里下载:http://files.cnblogs.com/yinyueyouge/Arithemic.7z

运行的主界面如下:

解释器也能够判断非法的输入:

现在这个解释器还非常原始。若是有 bug 发现,请提示出来,我会更正。:)

时间: 2024-07-31 04:50:54

用C#设计与实现一个四则算术运算解释器的相关文章

使用BPM V8设计并实现一个自定义收件箱和My Team Performance任务列表

使用 IBM Business Process Manager V8 设计并实现一个自定义收件箱和 My Team Performance 任务列表 简介 IBM Business Process Manager (IBM BPM) 提供了一些有用的功能来管理业务流程,包括流程参与者的收件箱.尽管建议您尽可能地使用开箱即用的功能,但在某些情形下,默认的实现可能无法满足您的要求.在这种情况下,您可能需要设计并实现一个自定义收件箱.本文为这种自定义收件箱提供了一种设计方法和示例实现.类似地,默认的

齿轮-有没有会展开式二级减速器的课程设计,求一个详细的word文档,有的朋友请帮我一下,求各位兄弟姐妹们帮助。

问题描述 有没有会展开式二级减速器的课程设计,求一个详细的word文档,有的朋友请帮我一下,求各位兄弟姐妹们帮助. 谢谢大家了,在线等.谢谢大家了,在线等.谢谢大家了,在线等.谢谢大家了,在线等.谢谢大家了,在线等.谢谢大家了,在线等.

本人利用三层架构设计好了一个.net项目,想配置IIS可以让其他人也可以看到

问题描述 本人利用三层架构设计好了一个.net项目,想配置IIS可以让其他人也可以看到,求详细配置步骤! 解决方案 解决方案二:是要局域网还是公网解决方案三:用VS发布,然后部署到你的目标服务器的IIS上.解决方案四:参考:解决方案五:vs发布,iis新建站点,物理路径指向你的发布文件夹就好了.解决方案六:部署在IIS上就行外网的话需要有外网IP解决方案七:在iis上挂接发布不发布都可以,配置ip和物理地址物理地址指向你项目的地址解决方案八:这个得根据你用的VS是什么版本来定步骤,不过无论什么版

设计中的一个问题????

问题描述 我们在设计一个OA系统,当初设计的时候是以一个产品为对象的,可是现在发现在实际生产过程中,他们有时候会把几个产品合在一起生产,那怎么来修改呢?一个产品有一个唯一的编号,如果几个产品合在一起,那怎么唯一标识呢?我们已经做了蛮多的工作了,现在要修改,不知道怎样修改最好,耗费的人力物力最少.比如我们在系统中,之前的设计是:一个产品对应一个<施工单>,一个产品对应印刷,然后是装订.但是现在是几个产品对应一个<施工单>,然后就是印刷,印刷过程中,这几个产品也是合在一起的,但是到了装

snmp-我最近在做SNMP设计,遇到一个难题

问题描述 我最近在做SNMP设计,遇到一个难题 我最近在做SNMP设计,遇到一个难题:就是我要同时设置IP,子网掩码,网管和DNS一共5个参数.如何做呢? 解决方案 应该是对应多个OID,你一个个SET命令设置过去

设计思维:一个有益的传说

译作.Don Norman 对于http://www.aliyun.com/zixun/aggregation/29798.html">design thinking 的反思.他认为设计思维仅仅是个有益的传说.设计思维和以前的创新性的思维并没有更多的不同,但却把设计机构和设计师置于一个特殊的神秘位置.但是它又的确能能改变以往大众对于设计这个词的片面看法. 一个伟大的传说正在冉冉升起,这个传说流传于商界.学术界和政府部门.它既朗朗上口又有说服力.尽管它无害,但是它错了.什么传说?设计师们拥有

编写一个四则运算程序

问题描述 编写一个四则运算程序可以随机产生十道四则运算题输入答案可以判断正确率用c#窗体程序来做求代码本人初学者不太会 解决方案 解决方案二:完全随机不太现实,那成了人工智能了你可以把题库存放在文件或数据库里,然后随机从里面抽题出来当然要把相应的答案也存到同一行里这样就可以判断答案是否正确了解决方案三:如果你能说出某种规律,可能还可以按照规律来随机否则类似(1+(1+(1+(1+(1+(1+(1+(1+(1+2)))))))))这种东西,看起来是个很简单的四则运算而已,实际上要生成这种东西不知道

《设计团队协作权威指南》—第1章1.2节设计团队是一个凝聚的整体

1.2 设计团队是一个凝聚的整体构成设计团队的元素和指导项目构造的原则组成一个框架,这个框架看起来是由一些要素.方法和环境构成的.但是,它首先是一群团队成员紧紧抱团的集体. 1.2.1 基本价值观每一个设计团队都有属于他们的基本价值观.没有这些,设计团队无法有效发挥作用.这些价值观决定了团队成员相处的态度.这些基本价值观中最重要的是尊重.谦虚和包容. 尊重设计师通过他们伟大的工作赢得尊重,从而赢得投资方或其他同事的认可.知名设计师可能会得到其他设计师的尊重,但那是由他在市场上取得的成功带来的,一

EGSL Interpreter 1.5.0发布 一个小型的解释器

EGSL Interpreter 1.5.0在此版本中增加了一个易于使用的精灵动画系统.现在已经可以访问文件http://www.aliyun.com/zixun/aggregation/17569.html">管理功能,以及一些地形设置的图形功能.Haiku OS现在正式支持EGSL的操作系统,虽然没有可用的IDE. EGSL 是一个小型的解释器,可用来执行 Lua 脚本,适合用来做快速简单的游戏开发. 下载地址:http://www.egsl.retrogamecoding.org//