From 405ef03a28958cc28322b46aceead9c99efb615c Mon Sep 17 00:00:00 2001 From: codeboss <2422523675@qq.com> Date: Sat, 15 Feb 2025 14:42:24 +0800 Subject: [PATCH] update --- libSyntax/syntax_novel.cpp | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/libSyntax/syntax_novel.cpp b/libSyntax/syntax_novel.cpp index eaec72b..5adc5b7 100644 --- a/libSyntax/syntax_novel.cpp +++ b/libSyntax/syntax_novel.cpp @@ -68,24 +68,45 @@ public: QList> expr_rule_parse(std::shared_ptr cursor) const override { //// 如果提前结束,记录错误并返回 //if (!cursor->words()) { + // // 只有在表达式的起始点遇到nullptr,才是正常结束。 + // if (cursor->token()->tokenType() != lib_token::IActionToken::Type::ElementBegin) { + // auto ncurs = std::make_shared(cursor); + // ncurs->logExprsError(QString("Syntax[0x00001]输入错误,程序提前结束:%1。").arg(cursor->filePath())); + // ncurs->setFailure(); + // return QList>() << ncurs; + // } + // while (cursor->token()->tokenType() == lib_token::IActionToken::Type::ElementBegin) // cursor = cursor->previous(); - // out << cursor; - // return QList>(); + // auto ncurs = std::make_shared(cursor); + // ncurs->setComplete(); + // return QList>() << ncurs; //} + //auto content = content_extract(cursor->token()); + //// 绑定文字行 //auto bind_row = cursor->words()->row(); //QList> bridge_list{ cursor }; //decltype(bridge_list) final_result; - - //for (;bridge_list.size();) { + //for (; bridge_list.size();) { // // 一次匹配 // decltype(bridge_list) current_result; // for (auto branch : bridge_list) { - // if(branch->words()->row() == bind_row){ - // auto mrst = _children_store->parse(branch, out); + // if (branch->words()->row() == bind_row) { + // auto mrst = _children_store->parse(branch); + + // // 本次解析无法通过,全错 + // if (!std::count_if(mrst.begin(), mrst.end(), + // [&](std::shared_ptr v) { + // return !v->exprsErrorCount();// 没错 + // })) { + // final_result.append(branch); + // continue; + // } + + // // // for (auto m : mrst) { // if (m->exprsErrorCount()) { // std::const_pointer_cast(m)->setFailure(true); @@ -99,8 +120,9 @@ public: // } // bridge_list = current_result; //} - //for(auto x : bridge_list) - // if(!final_result.contains(x)) + + //for (auto x : bridge_list) + // if (!final_result.contains(x)) // final_result.append(x); //return final_result;