#include "ast_basic.h" #include "libsyntax.h" #include using namespace ast_basic; using namespace lib_token; using namespace lib_syntax; ExprInstance::ExprInstance(std::shared_ptr bind) : _expr_rule(bind) { } std::shared_ptr ExprInstance::definedRule() const { return _expr_rule; } QString ExprInstance::filePath() const { if (!tokens_bind.size()) throw new SyntaxException(u8"InternalError[0x0002]一个空的非法无效节点"); return tokens_bind.first()->file(); } void ExprInstance::addToken(std::shared_ptr token_inst) { this->tokens_bind.append(token_inst); } QList> ExprInstance::children() const { return this->children_store; } void ExprInstance::addChild(std::shared_ptr inst) { this->children_store.append(inst); } QList> ExprInstance::tokens() const { return this->tokens_bind; } ExprProgram::ExprProgram(const QString& root) : _program_root(root) { } std::shared_ptr ExprProgram::definedRule() const { return std::shared_ptr(); } QString ExprProgram::filePath() const { return this->_program_root; } QList> ExprProgram::tokens() const { return QList>(); } void ExprProgram::addToken(std::shared_ptr token_inst) { } QList> ExprProgram::children() const { return _children_store; } void ExprProgram::addChild(std::shared_ptr inst) { _children_store.append(inst); }