资源简介
一个自己写的命令行下交互式计算器,支持四则混合运算,优先级,循环表达式,条件表达式,函数等,变量定义有作用域, 支持自定义函数, 支持矩阵运算和复数.
本程序使用yacc生成表达式分析器, *.l文件需要flex来编译,*.y文件使用bison编译.
此源代码仅供学习和参考
代码片段和文件信息
#include “variary.h“
#include
#include
#include “interface.h“
#include
#include
char* trimleft(const char* str)
{
char* p = (char*) str;
while(*p && isspace(*p))
{
p++;
}
return p;
}
class COutput : public IOutput
{
public:
virtual int OutputString(const char* str)
{
std::cout << str;
return 0;
}
virtual char* GetLine(char* buf int len)
{
std::cin.getline(buf len);
return trimleft(buf);
}
};
BOOL WINAPI HandlerRoutine(
DWORD dwCtrlType // control signal type
);
IMiniCalc* pCalc = NULL;
int main(int argc char** argv)
{
SetConsoleCtrlHandler(HandlerRoutine TRUE);
COutput output;
pCalc = CreateMiniCalc(&output);
if(pCalc == NULL)
{
std::cout << “Can‘t create MiniCalc Instance!\n“;
return 1;
}
// CBigInt bi(“0xffffbfbbcbbfffdeebbc“);
// CBigInt ff(“0x87987932487324fedcdddcdaac“);
// std::cout << bi.ToStringHex() << “*“ << ff.ToStringHex() << “=“
// << (bi*ff).ToStringHex() << std::endl;
while(1)
{
std::cout << “MiniCalc>“;
char line[65536];
std::cin.getline(linesizeof(line));
char * cmd = trimleft(line);
if(!stricmp(cmd “quit“) ||
!stricmp(cmd “exit“))
{
break;
}
pCalc->Execute(line);
}
pCalc->Destroy();
return 0;
}
BOOL WINAPI HandlerRoutine(
DWORD dwCtrlType // control signal type
)
{
switch(dwCtrlType)
{
case CTRL_C_EVENT:
case CTRL_BREAK_EVENT:
case CTRL_CLOSE_EVENT:
case CTRL_LOGOFF_EVENT:
case CTRL_SHUTDOWN_EVENT:
if(pCalc)
{
pCalc->Destroy();
ExitProcess(0);
}
break;
}
return TRUE;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1676 2006-09-03 16:57 MiniCalc\Calc.cpp
文件 1130 2006-01-06 15:50 MiniCalc\debug.cpp
文件 870 2006-01-06 15:50 MiniCalc\debug.h
文件 2665 2007-06-22 21:03 MiniCalc\exception.cpp
文件 1985 2007-06-22 21:03 MiniCalc\exception.h
文件 85 2006-08-31 11:30 MiniCalc\ex
文件 17508 2006-10-12 20:38 MiniCalc\ex
文件 423 2006-08-31 09:34 MiniCalc\FunctionImp.cpp
文件 1113 2006-08-31 11:09 MiniCalc\FunctionImp.h
文件 596 2006-09-03 14:59 MiniCalc\FunctionInterface.h
文件 1278 2006-09-03 16:12 MiniCalc\Global.cpp
文件 3526 2007-06-22 21:07 MiniCalc\Global.h
文件 350 2006-08-31 21:10 MiniCalc\interface.h
文件 18088 2007-06-28 20:45 MiniCalc\MiniCalc.cpp
文件 7788 2007-06-21 20:26 MiniCalc\MiniCalc.dsp
文件 539 2006-01-06 10:28 MiniCalc\MiniCalc.dsw
文件 559 2006-09-03 15:52 MiniCalc\MiniCalc.h
文件 319488 2007-06-28 20:46 MiniCalc\Release\MiniCalc.exe
文件 69587 2007-06-21 15:59 MiniCalc\Release\minicalc.exe.output
文件 1514 2009-12-19 22:36 MiniCalc\Release\UserDefined.txt
文件 42582 2007-06-21 20:25 MiniCalc\sentence.cpp
文件 1291 2007-06-21 20:25 MiniCalc\sentence.h
文件 9934 2007-06-21 16:40 MiniCalc\sentence.y
文件 31 2006-08-31 11:33 MiniCalc\sentence_class.cpp
文件 1930 2007-06-21 16:42 MiniCalc\sentence_class.h
文件 723 2006-02-05 17:15 MiniCalc\Stack.cpp
文件 917 2006-08-30 14:11 MiniCalc\Stack.h
文件 30 2006-09-06 10:58 MiniCalc\statement.cpp
文件 229 2006-09-06 10:59 MiniCalc\statement.h
文件 1573 2006-10-11 11:50 MiniCalc\symbol.cpp
............此处省略14个文件信息
- 上一篇:高速运动目标的瞬时距离
- 下一篇:山东大学编译原理实验
相关资源
- 读入一个C程序,统计程序中代码、注
- 马的Hamilton周游路线问题国际象棋
- 操作系统模拟分页式存储管理中硬件
- QShareMemory.zip
- delphi仿系统自带计算器
- CoordinateTransformationDlg.rar
- 多尺度的KCF算法代码
- 字符Unicode标准编码计算器.zip
- SIFT算法实现及代码详解
- 简单计算器——汇编语言实现
- 中小公司工资管理系统
- 多次提前还款计算器
- Win32 汇编计算器288875
- 纯电动车辆动力系统优化计算器
- VS2010~2017免注册调用大漠插件
- 自制EXCEL计算器,免去敲打计算器
- 外弹道学课程设计代码.zip
- labview实现的简单计算器
- 数控加工切削用量计算器V2.0
- 点云关键点提取1
- 航模马达绕线计算器
- labview中级计算器的制作
- labview基础入门,初级计算器的制作
- json.hpp头文件
- scratch制作计算器.sb3
- 矩阵乘法及两种求逆方法
- stc89c51所制作的一个简易计算器包含原
- Camshift 全自动跟踪算法/opencv
- linux计算器代码
- labview计算器
评论
共有 条评论