31 lines
685 B
C++
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;
|
|
};
|
|
} |