20170226C++项目班08_修复bug/函数添加
2017-03-01 20:25
155 查看
修复bug:
1:当输入:1=5的时候应该抛出异常,表明其左值不可赋值,可以在AssignNode的构造函数里面加上判断,左值是否是一个变量,从而解决。2:Parser里面所有的Node应该判断是否为空指针,否则可能会抛出空指针异常,这时候,测试用例就非常重要了!!
注意:在些项目的时候,需要把测试用例做成多个版本,把他们记录好。在程序测试的时候也可以使用一个专门的类来做程序的测试,使用for循环遍历。
3:抛出异常的时候注意包装,可以把工程常用的几种异常定义出来,需要抛出异常的时候就可以直接抛出,避免直接生成对象以及出现魔数等。
4:表达式未完全解析的情况可以通过最后返回树后,判断扫描器的下一个状态是不是为结束,如果不是,就代表表达式未读取完,应该抛出异常。
函数添加:
1:添加FuncTable类,并传递进SymbolTable的对象,这个类会将一些函数名称添加进这个SymbolTable的对象。2:调用对应的math库函数:使用结构体将函数名和函数指针连接起来,使用函数指针数组将所有的函数连接起来,从而是ian调用。
3:部分代码:
struct FunctionInfo { FuncPtr pFunc_; char* pFuncName_; }; FunctionInfo funcs[] = { log, "log", sin, "sin", cos, "cos", tan, "tan", abs, "abs" }; FunctionTable::FunctionTable(SymbolTable &symbolTbl) :size_(sizeof(funcs) / sizeof(FunctionInfo)) { pFuncs_ = new FuncPtr[size_]; for (size_t i = 0; i < size_; ++i) {//我们希望添加的函数名的ID和我们的下标是一样的,只要保证第一次初始化就初始化这个就可以解决了。 pFuncs_[i] = funcs[i].pFunc_; if (i != symbolTbl.AddSymbol(funcs[i].pFuncName_)) throw MyExcept("初始化失败!"); } }
相关文章推荐
- 20170226C++项目班08_修复bug/函数添加
- 20170226C++项目班08_修复bug/函数添加
- 20170226C++项目班08_修复bug/函数添加
- 20170226C++项目班08_修复bug/函数添加
- 20170226C++项目班08_修复bug/函数添加
- 20170226C++项目班08_修复bug/函数添加
- 20170226C++项目班08_修复bug/函数添加
- 20170226C++项目班08_修复bug/函数添加
- VS2008 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
- VS2008 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
- VS2005 C++ 项目怎样添加“依赖附加项”
- Unreal4 简单创建一个c++项目,并给对象添加材质
- VS2008 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
- C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
- 构建c/c++项目时添加宏定义
- VS2008 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
- C++ NLPIR+FRISO 项目的中文分词功能添加
- 在已有的C++项目中添加cu文件
- VS2008 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
- VS2008 C++ 项目添加“依赖”、“库目录”和“包含目录”