📄 pattern.h
字号:
/************************************************************************ Copyright IBMTC Written by Xinxi Wang**************************************************************************/#ifndef PATTERN_H#define PATTERN_H#include <string>#include <vector>#include <climits>#include <iostream>#include <cassert>#include "Terminal.h"#include "Variable.h"#include "Token.h"/** * 句型 */class Pattern{public: Pattern(); Pattern(const Pattern & p); Pattern(const Token* t); Pattern(const std::vector<Token *>& t); /** * The pointer should not be deleteed. */ std::vector<Token *> getTokens ( ) const; /** * @param t */ void setTokens (const std::vector<Token *>& t ); /** * 返回两个句型是否相等 */ bool operator==(const Pattern &other) const; /** * @brief 赋值运算符 */ Pattern& operator=(const Pattern& p); /** * @brief 获取Pattern中第idx个符号 */ Token * at(int idx) const; /** * @brief 删除[start, end)间的符号 */ void deleteTokens(int start, int end = INT_MAX); /** * @brief 插入符号于pos前面 */ void insertTokens(std::vector<Token*> t, int pos = INT_MAX); /** * @brief 插入一个符号于pos前面 */ void insertToken(const Token* t, int pos = INT_MAX); /** * @brief 在pos前面插入另一个句型 */ void insertPattern(const Pattern& p, int pos = INT_MAX); /** * @brief 返回句型长度 */ size_t length() const; void print() { for (std::vector<Token *>::iterator i = tokens.begin(); i != tokens.end(); i++) { (*i)->print(); std::cout << " "; } } ~Pattern();private: /** * 释放内存 */ void dealloc(); /** * 深拷贝 */ void deepCopy(const Pattern &p); private: // 句式里面所有的终结符以及变元序列 std::vector<Token *> tokens;};#endif // PATTERN_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -