摘要: 计算器的github下载地址:https://github.com/ljian1992/calculator 概述 表达式计算器的类基本已经设计完成了,由于在程序运行的时候总会有这样那样的异常,例如:a +2, a没有初始化,对于异常的管理一般而言是需要自定义异常类。这个自定义异常类也是在继承了系统已经定义好的exception类,然后再重新定义内容。 异常的种类 语法异常---->Synt... 阅读全文
posted @ 2015-02-14 23:45 Ljian1992 阅读(667) 评论(1) 推荐(0) 编辑
摘要: 计算器的github下载地址:https://github.com/ljian1992/calculator 概述 把符号表和变量表中的内容保存到一个文件中,通过IO文件流,来把符号表和变量表存储到文件中。在这之前需要弄明白什么是序列化和反序列化 对象的序列化 序列化:把对象转换为字节序列的过程 反序列化:把字节序列恢复为对象的过程 我们要把SymbolTable类的对象(符号表)和Sto... 阅读全文
posted @ 2015-02-14 23:31 Ljian1992 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 计算器的github下载地址:https://github.com/ljian1992/calculator 概述 有了构建语法的类,存储符号的类,现在就可以对表达式进行扫描,解析了。扫描可以抽象出一个Scanner类来完成这一个功能,而解析可以抽象出一个Parser类来完成这一个功能。这两个类存在一定的关系,扫描与解析的互动是这样子的:扫描到一个标识符,然后解析它是什么标识符。由于该表达式计算器... 阅读全文
posted @ 2015-02-14 23:19 Ljian1992 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 计算器的github下载地址:https://github.com/ljian1992/calculator 符号表,函数表,变量存储表 表达式计算器,需要支持变量和函数,而变量和函数都是些符号,因此设置一个SymbolTable类来存储这些符号。符号有两种,一种是变量,一种是函数,故在设置一个Storage类存储变量中的值,设置一个FunctionTable类来存储函数。由于这三中类存在着联系,... 阅读全文
posted @ 2015-02-11 23:43 Ljian1992 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 计算器的github下载地址:https://github.com/ljian1992/calculator我们的最终目的是计算出表达式中的值,因此就需要定义一个抽象类用于计算表达式的值,该抽象类定义为:Node下面所有的类图不使用UML建模语言画的,是通过visual studio自动生成的类关系... 阅读全文
posted @ 2015-02-11 23:36 Ljian1992 阅读(939) 评论(0) 推荐(0) 编辑
摘要: 计算器的github下载地址:https://github.com/ljian1992/calculator 基于对象编程与面向对象编程 我们的最终目的是用C++设计一个面向对象的表达式计算器,所以非常有必要弄清楚,什么是基于对象编程和面向对象的编程。而要弄清楚这一点,又要先弄明白什么是值语言,什么是对象语义 值语义:对象的拷贝与原对象无关,拷贝后与原对象脱离关系,互不影响。这种拷贝叫深拷... 阅读全文
posted @ 2015-02-11 23:10 Ljian1992 阅读(847) 评论(0) 推荐(0) 编辑
摘要: 计算器的github下载地址:https://github.com/ljian1992/calculator 巴科斯范式(BNF) 1.在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。 2.在双引号外的字(有可能有下划线)代表着语法部分。 3.尖括号( )内包含的为必选项。 4.方括号( [ ] )内包含的为可选项。 5.大括号( { } )内包含的为... 阅读全文
posted @ 2015-02-11 22:59 Ljian1992 阅读(1905) 评论(0) 推荐(0) 编辑
摘要: 计算器的github下载地址:https://github.com/ljian1992/calculator 面向对象的表达式计算器的功能 1.能够计算普通表达式 2.支持变量 3.支持函数 4.支持保存变量和函数 阅读全文
posted @ 2015-02-11 22:57 Ljian1992 阅读(265) 评论(0) 推荐(0) 编辑
摘要: C++的语言类型 C++是静态的强类型语言。 静态语言:数据类型在编译期间检查,因此在写程序时需要声明变量的类型 强类型语言:强调数据类型,不同的数据类型间的转换需要进行强制类型转换 C与C++的关系 1.C++继承所有C的特性 2.C++在C的基础上提供的更多的语法和特性-----类型加强,函数加强,异常处理 3.C++在C的基础上增加了面向对象的方法 4.... 阅读全文
posted @ 2015-01-03 21:12 Ljian1992 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 概述在C语言中程序的全局变量作用域只有一个,所有的全局标识符都共享同一个作用域,在多人开发的时候,容易造成标识符冲突。C++为了解决这个问题提出了命名空间这一概念,通过命名空间把全局变量作用域划分为不同的部分,不同的命名空间中的可以相同但不产生冲突。 Tips: 标识符:标识符是指常量、 变量、语句... 阅读全文
posted @ 2015-01-03 20:31 Ljian1992 阅读(675) 评论(0) 推荐(0) 编辑