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); } } }
public void Parse(ExpressionParserHelper parseHelper) { if (parseHelper.At(BRACKETS_OPEN)) { GuardPartOfPropertyAccess(parseHelper); var token = parseHelper.Current; parseHelper.Expect(BRACKETS_OPEN); var brackets = new SquareBrackets { Token = token }; parseHelper.Push(brackets); parseHelper.ParseExpression(); } else { parseHelper.Reduce(TYPE); var nested = parseHelper.Pop(); parseHelper.Expect(nameof(SquareBracketsParser), BRACKETS_CLOSE); var brackets = ((SquareBrackets)parseHelper.Top); brackets.Fill(nested); PropertyParser.FillArguments(parseHelper); } }
public void Parse(ExpressionParserHelper parseHelper) { if (parseHelper.At(BRACKETS_OPEN)) { var token = parseHelper.Current; parseHelper.Expect(BRACKETS_OPEN); var brackets = new Brackets(_functionArgument, _arguments) {Token = token}; parseHelper.Push(brackets); parseHelper.ParseExpression(); } else { parseHelper.Reduce(TYPE); var nested = parseHelper.Pop(); parseHelper.Expect(nameof(BracketsParser), BRACKETS_CLOSE, BRACKETS_COMMA); var brackets = ((Brackets) parseHelper.Top); brackets.FillNext(nested); if (parseHelper.At(BRACKETS_CLOSE) && brackets.PartOfFunction) { FunctionParser.FillArguments(parseHelper); } } }