添加项目文件。
This commit is contained in:
52
ScientificCalculator/Token.h
Normal file
52
ScientificCalculator/Token.h
Normal file
@@ -0,0 +1,52 @@
|
||||
#ifndef TOKEN_H
|
||||
#define TOKEN_H
|
||||
|
||||
#include<string>
|
||||
|
||||
using namespace std;
|
||||
//<2F>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
enum class TokenType {
|
||||
Number,
|
||||
Operator,
|
||||
LeftParen,
|
||||
RightParen,
|
||||
Function,
|
||||
Variable
|
||||
};
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
enum class Associativity {
|
||||
Left,
|
||||
Right,
|
||||
None
|
||||
};
|
||||
|
||||
//Token<65>ṹ<EFBFBD><E1B9B9>
|
||||
struct Token {
|
||||
TokenType type;//<2F>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
string value; //ʵ<><CAB5><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
int precedence = -1; //<2F><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD>Ч
|
||||
Associativity associativity = Associativity::None; //<2F><><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD>Ч
|
||||
|
||||
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>
|
||||
Token(TokenType t, const string& v,
|
||||
int p = -1, Associativity assoc = Associativity::None)
|
||||
:type(t), value(v), precedence(p), associativity(assoc) {}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6><CFB7><EFBFBD>
|
||||
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD> "3.14", "42"<22><>
|
||||
bool is_num() const { return type == TokenType::Number; }
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "+", "-", "*", "/"<22><>
|
||||
bool is_ope() const { return type == TokenType::Operator; }
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "sin", "cos", "log"<22><>
|
||||
bool is_fun() const { return type == TokenType::Function; }
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "("<22><><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
bool is_LP() const { return type == TokenType::LeftParen; }
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ")"<22><><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool is_RP() const { return type == TokenType::RightParen; }
|
||||
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "x", "y"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ֧<D5B9>ַ<EFBFBD><D6B7>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool is_var()const { return type == TokenType::Variable; }
|
||||
|
||||
};
|
||||
#endif
|
||||
Reference in New Issue
Block a user