fixed some bugs

This commit is contained in:
Timerix 2025-04-08 18:03:56 +05:00
parent 890166ebce
commit 7353cbcd49
2 changed files with 8 additions and 7 deletions

View File

@ -75,7 +75,7 @@ internal static partial class Modes
ColoredConsole.Write("Input file path: ", ConsoleColor.Blue); ColoredConsole.Write("Input file path: ", ConsoleColor.Blue);
input = ColoredConsole.ReadLine(ConsoleColor.Gray); input = ColoredConsole.ReadLine(ConsoleColor.Gray);
if (string.IsNullOrEmpty(input)) if (string.IsNullOrEmpty(input))
throw new NullReferenceException(); throw new ArgumentException("Input file path is required");
inputPath = input; inputPath = input;
break; break;
@ -83,9 +83,9 @@ internal static partial class Modes
case "output": case "output":
ColoredConsole.Write("Output file path [default=stdout]: ", ConsoleColor.Blue); ColoredConsole.Write("Output file path [default=stdout]: ", ConsoleColor.Blue);
input = ColoredConsole.ReadLine(ConsoleColor.Gray); input = ColoredConsole.ReadLine(ConsoleColor.Gray);
if (string.IsNullOrEmpty(input)) if(string.IsNullOrEmpty(input))
throw new ArgumentException("Input file path is required"); outputPath = null;
inputPath = input; else outputPath = input;
break; break;
case "s": case "s":

View File

@ -41,7 +41,8 @@ public static class SearchExpressionCompiler
var subExprs = new List<ISearchExpression>(); var subExprs = new List<ISearchExpression>();
int supExprBegin = 1; int supExprBegin = 1;
int bracketBalance = 1; int bracketBalance = 1;
for (int i = supExprBegin; i < query.Length && bracketBalance != 0; i++) int i = supExprBegin;
for (; i < query.Length && bracketBalance != 0; i++)
{ {
if (CharEqualsAndNotEscaped('(', query, i)) if (CharEqualsAndNotEscaped('(', query, i))
{ {
@ -60,7 +61,7 @@ public static class SearchExpressionCompiler
} }
} }
if (query[^1] != ')') if (i != query.Length)
throw new NotImplementedException("Expressions after ')' are not supported"); throw new NotImplementedException("Expressions after ')' are not supported");
if (bracketBalance > 0) if (bracketBalance > 0)
@ -68,7 +69,7 @@ public static class SearchExpressionCompiler
if (bracketBalance < 0) if (bracketBalance < 0)
throw new Exception("Too many closing brackets"); throw new Exception("Too many closing brackets");
var subPartLast = query.Slice(supExprBegin, query.Length - supExprBegin - 1); var subPartLast = query.Slice(supExprBegin, i - 1 - supExprBegin);
var subExprLast = Compile(subPartLast); var subExprLast = Compile(subPartLast);
subExprs.Add(subExprLast); subExprs.Add(subExprLast);
return new MultipleMatchExpression(subExprs); return new MultipleMatchExpression(subExprs);