资源简介
一个自己写的命令行下交互式计算器,支持四则混合运算,优先级,循环表达式,条件表达式,函数等,变量定义有作用域, 支持自定义函数, 支持矩阵运算和复数.
本程序使用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个文件信息
- 上一篇:高速运动目标的瞬时距离
- 下一篇:山东大学编译原理实验
相关资源
- 电脑卡西欧计算器 fx-991CN X Emulator19中
- VisualStudioUninstaller vs卸载工具
- 编译原理实验工具及参考源码(lex&
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 卡西欧工程计算器模拟器Casio FX
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- 外点法程序
- 外罚函数程序
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
- c 程序判断离散数学中命题公式
- 多项式求和(数据结构C 版)
- PIC 单片机定时器初值计算器
- vc 6.0开发的流程图编辑器
评论
共有 条评论