implemented loop handling for single loop lines

This commit is contained in:
DrFrugal 2024-01-22 04:05:17 +01:00
parent deaa8bd438
commit cee06594d9
1 changed files with 14 additions and 3 deletions

View File

@ -13,7 +13,7 @@
std::string file_path; std::string file_path;
bool dbg; bool dbg;
bool dbg_prnt_invld_only; bool dbg_prnt_invld_only;
bool use_all = true; // 46 invalid parses bool use_all = true; // 26 invalid parses
FunctionInfo fi; FunctionInfo fi;
std::string func; std::string func;
@ -285,7 +285,8 @@ int main()
case 'd': case 'd':
if (ln_is(ln, i, "do {")) if (ln_is(ln, i, "do {"))
{ // setting loop end, if not already in a loop { // setting loop end, if not already in a loop
set_str_if_empty(&lp_utl, ind + "}"); set_str_if_empty(&lp_utl, ln[ln.length() - 1] == '{' ? ind + "}" : "\1"); // check if this is a single line do-while loop (who would even program such a thing!?
break;
} }
if (ln_is(ln, i, "case ") || ln_is(ln, i, "default:")) if (ln_is(ln, i, "case ") || ln_is(ln, i, "default:"))
{ {
@ -294,6 +295,13 @@ int main()
break; break;
} }
break; break;
case 'f':
if (ln_is(ln, i, "for ("))
{
set_str_if_empty(&lp_utl, ln[ln.length() - 1] == '{' ? ind + "}" : "\1"); // check if this is a single line for loop
break;
}
break;
case 'i': // check for if case 'i': // check for if
if (ln_is(ln, i, "if ")) if (ln_is(ln, i, "if "))
{ // enough characters left to be if statement { // enough characters left to be if statement
@ -336,7 +344,8 @@ int main()
case 'w': case 'w':
if (ln_is(ln, i, "while (")) if (ln_is(ln, i, "while ("))
{ // setting loop end, if not already in a loop { // setting loop end, if not already in a loop
set_str_if_empty(&lp_utl, ind + "}"); set_str_if_empty(&lp_utl, ln[ln.length() - 1] == '{' ? ind + "}" : "\1"); // check if this is a single line while loop
break;
} }
break; break;
} }
@ -379,6 +388,8 @@ int main()
if (!lp_utl.empty() && ln.starts_with(lp_utl)) if (!lp_utl.empty() && ln.starts_with(lp_utl))
lp_utl = ""; lp_utl = "";
if (lp_utl == "\1")
lp_utl = "";
if (!skp_push_utl.empty() && ln.starts_with(skp_push_utl)) if (!skp_push_utl.empty() && ln.starts_with(skp_push_utl))
skp_push_utl = ""; // reset skip since line has been reached now skp_push_utl = ""; // reset skip since line has been reached now
if (skp_push_utl == "\1") if (skp_push_utl == "\1")