⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pattern.h

📁 LL1通用语法分析器
💻 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 + -