WsParser_VS/WsNovelParser/astprint.h

31 lines
685 B
C++

#pragma once
#include <QList>
#include <QFileInfo>
#include <QDir>
#include <QDomDocument>
#include <ast_gen.h>
#include <parse_novel.h>
namespace printer {
/**
* @brief Ast输出构建器.
*/
class AstGenerate : public lib_parse::TreeVisitor {
private:
QDir src_root;
QDomDocument doc;
QList<std::pair<int, QDomElement>> element_stack;
void append_tokens(QDomElement _elm, std::shared_ptr<const ast_gen::SyntaxElement> inst);
public:
AstGenerate(const QDir &src_root);
QString content() const;
// 通过 TreeVisitor 继承
lib_parse::VisitMode mode() const override;
bool visit(std::shared_ptr<const ast_gen::ElementAccess> ast_element) override;
};
}