Пример #1
0
 public void Parse(ExpressionParserHelper parseHelper)
 {
     if (parseHelper.At(BRACKETS_OPEN))
     {
         var token = parseHelper.Current;
         parseHelper.Expect(BRACKETS_OPEN);
         var brackets = new Brackets(_functionArgument, _arguments, _paramsArgument)
         {
             Token = token
         };
         parseHelper.Push(brackets);
         parseHelper.ParseExpression();
     }
     else
     {
         Brackets brackets;
         if (!parseHelper.PreviousWas(BRACKETS_OPEN))
         {
             parseHelper.Reduce(TYPE);
             var nested = parseHelper.Pop();
             parseHelper.Expect(nameof(BracketsParser), SIGNS);
             brackets = ((Brackets)parseHelper.Top);
             brackets.FillNext(nested);
         }
         else
         {
             brackets = ((Brackets)parseHelper.Top);
         }
         if (parseHelper.At(BRACKETS_CLOSE) && brackets.PartOfFunction)
         {
             FunctionParser.FillArguments(parseHelper);
         }
     }
 }