資源簡介
一個自己寫的命令行下交互式計算器,支持四則混合運算,優先級,循環表達式,條件表達式,函數等,變量定義有作用域, 支持自定義函數, 支持矩陣運算和復數.
本程序使用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?< 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*ff).ToStringHex()?<
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個文件信息
- 上一篇:高速運動目標的瞬時距離
- 下一篇:山東大學編譯原理實驗
評論
共有 條評論