WsParser_VS/CoreTest/main.cpp

45 lines
1.4 KiB
C++
Raw Normal View History

2025-02-08 05:40:36 +00:00
#include <QtCore/QCoreApplication>
#include <libwords.h>
#include <qdebug.h>
#include <QFile>
#include <libsyntax.h>
#include <ast_gen.h>
#include <syntax_novel.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
2025-02-12 06:41:24 +00:00
QFile in("D:\\Projects\\Cpp\\WsNovelParser\\CoreTest\\syntax_example.txt");
2025-02-08 05:40:36 +00:00
in.open(QIODevice::ReadOnly|QIODevice::Text);
QTextStream tt(&in);
lib_words::WordReader reader;
2025-02-12 06:41:24 +00:00
auto vwords = reader.wordsFrom(tt, "D:\\Projects\\Cpp\\WsNovelParser\\CoreTest\\syntax_example.txt");
2025-02-08 05:40:36 +00:00
auto words = vwords;
while (words) {
qDebug() << words->content();
words = words->nextWord();
}
ast_gen::SyntaxParser parser(example_novel::NovalSyntax::getSyntaxTree());
auto rst = parser.parse(vwords);
for (auto one : rst) {
2025-02-12 06:41:24 +00:00
qDebug() << "===================================================";
2025-02-12 13:50:45 +00:00
QList<QString> words_list;
2025-02-08 05:40:36 +00:00
auto vtoken = one->currentToken();
while (vtoken) {
if(vtoken->defines())
2025-02-12 13:50:45 +00:00
words_list.prepend(vtoken->content());
2025-02-08 05:40:36 +00:00
vtoken = vtoken->prevToken();
}
2025-02-12 13:50:45 +00:00
qDebug() << QString("Row:%1,Col:%2,Position:%3,ErrorCount:%4,Errors:")
.arg(one->currentToken()->row()).arg(one->currentToken()->column()).arg(one->currentToken()->position()).arg(one->exprsErrorCount())
<< one->totalErrors();
qDebug() << words_list;
2025-02-08 05:40:36 +00:00
}
return a.exec();
}