#include #include #include #include #include #include #include #include #include #include #include "novelparser.h" #include "htmlprint.h" using namespace example_novel; int main(int argc, char* argv[]) { QCoreApplication a(argc, argv); try { QFileInfoList files; files.append(QFileInfo("D:\\Projects\\Cpp\\WsNovelParser\\x64\\test_file\\description.txt")); auto parser = std::make_shared(); auto novel_accesstree = parser->parse(files); printer::tools_printer tool; tool.build_fragments(novel_accesstree); tool.build_refers_network(novel_accesstree); tool.fragments_anchors_define(tool.fragment_defines.values(), QDir::current()); tool.storylines_anchors_define(tool.storyline_defines.values(), QDir::current()); tool.volumes_anchors_define(tool.volume_defines.values(), QDir::current()); std::function, int)> tnode_print = [&](std::shared_ptr node, int intend) { auto name = node->element()->signature(); auto text = QString(intend * 2, ' ') + name; for (auto& t : node->tokens()) { text += " " + t->token()->content(); } qDebug() << text; for (auto& c_n : node->children()) { tnode_print(c_n, intend + 1); } }; tnode_print(novel_accesstree, 0); } catch (lib_syntax::SyntaxException* e) { qDebug().noquote() << e->message(); delete e; } catch (lib_parse::CheckException* e) { qDebug().noquote() << e->message(); delete e; } return a.exec(); }