WsParser_VS/WsNovelParser/astprint.h

31 lines
685 B
C
Raw Permalink Normal View History

2024-03-17 07:58:28 +00:00
#pragma once
#include <QList>
#include <QFileInfo>
2024-09-22 02:18:33 +00:00
#include <QDir>
2024-04-02 12:39:25 +00:00
#include <QDomDocument>
2024-03-17 07:58:28 +00:00
#include <ast_gen.h>
#include <parse_novel.h>
2024-03-28 13:11:12 +00:00
namespace printer {
2025-02-15 15:47:42 +00:00
/**
* @brief Ast输出构建器.
*/
2024-06-22 15:19:14 +00:00
class AstGenerate : public lib_parse::TreeVisitor {
private:
2024-09-22 02:18:33 +00:00
QDir src_root;
2024-06-22 15:19:14 +00:00
QDomDocument doc;
2025-03-01 13:15:15 +00:00
QList<std::pair<int, QDomElement>> element_stack;
2024-06-22 15:19:14 +00:00
void append_tokens(QDomElement _elm, std::shared_ptr<const ast_gen::SyntaxElement> inst);
public:
2024-09-22 02:18:33 +00:00
AstGenerate(const QDir &src_root);
2024-06-22 15:19:14 +00:00
QString content() const;
2025-02-15 15:47:42 +00:00
// 通过 TreeVisitor 继承
2024-06-22 15:19:14 +00:00
lib_parse::VisitMode mode() const override;
2025-02-15 15:47:42 +00:00
bool visit(std::shared_ptr<const ast_gen::ElementAccess> ast_element) override;
2024-06-22 15:19:14 +00:00
};
2024-03-28 13:11:12 +00:00
}