添加项目文件。

This commit is contained in:
KiriAky
2025-07-01 16:04:35 +08:00
parent 27b960a881
commit 0f8e7d3282
13 changed files with 755 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
#include "Calc.h"
#include <iostream>
// <20><>̬<EFBFBD><CCAC>Ա<EFBFBD><D4B1>ʼ<EFBFBD><CABC>
Tokenizer Calc::tokenizer;
InfixToPostfix Calc::converter;
PostfixEval Calc::evaluator;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڣ<D3BF><DAA3><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double Calc::eval(const string& expression) {
vector<Token> tokens = tokenizer.run(expression);
vector<Token> postfix = converter.run(tokens);
return evaluator.run(postfix);
}
// <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ӿڣ<D3BF><DAA3><EFBFBD> try-catch <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bool <20><>־
bool Calc::safeEval(const string& expr, double& res) {
try {
res = eval(expr);
return true;
}
catch (const exception& e) {
cerr << "[Error] " << e.what() << endl;
return false;
}
}
// <20><><EFBFBD>Խӿڣ<D3BF><DAA3><EFBFBD>ӡ<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>token <20>б<EFBFBD> <20><> <20><>׺<EFBFBD><D7BA><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>
void Calc::debug(const string& expr) {
try {
vector<Token> tokens = tokenizer.run(expr);
cout << "[Token List]" << endl;
for (const auto& t : tokens) cout << t.value << " ";
cout << endl;
vector<Token> postfix = converter.run(tokens);
cout << "[Postfix]" << endl;
for (const auto& t : postfix) cout << t.value << " ";
cout << endl;
}
catch (const exception& e) {
cerr << "[Debug Error] " << e.what() << endl;
}
}