Пример #1
0
        // UnaryOperatorExpression = UnaryOperator, UnaryExpression
        private IParsingProduct ParseUnaryOperatorExpression(ISourceCode src)
        {
            using var ctx = src.GetFurtherContext();
            ctx.ParseWhiteSpace();

            var operFragment = ParseTerm(ctx, _repository.UnaryOperators, out var oper);

            if (operFragment == null)
            {
                return(null);
            }

            var exp = ParseUnaryExpression(ctx);

            if (exp == null)
            {
                return(null);
            }

            var opExp = _grammarProductsFactory.CreateOperatorNode(operFragment, oper, exp);

            if (opExp == null)
            {
                ctx.SetError(ParsingErrors.UnexpectedSymbol);
                return(null);
            }
            ctx.Accept();
            return(opExp);
        }