Ejemplo n.º 1
0
        private static bool ParseOpenParenthesis(Parser.ParseContext context)
        {
            context.BpOrder.Push(TokenType.OpenParenthesis);
            ValidateTokenOrder(context, TokenType.OpenParenthesis);
            Element element = new ElementGrouping(TokenType.OpenParenthesis);

            context.Ouput.Push(element);
            context.Stack.Push(element);
            context.TokenPosition++;
            return(true);
        }
Ejemplo n.º 2
0
        private static bool ParseCloseParenthesis(Parser.ParseContext context)
        {
            if (context.BpOrder.Count == 0 || context.BpOrder.Pop() != TokenType.OpenParenthesis)
            {
                throw new ELException("Invalid token at " + context.TokenPosition);
            }
            ValidateTokenOrder(context, TokenType.CloseParenthesis);
            Element element = new ElementGrouping(TokenType.CloseParenthesis);

            while (context.Stack.Count > 0)
            {
                Element lastElement = context.Stack.Pop();
                if (lastElement.Type.Equals(TokenType.OpenParenthesis))
                {
                    break;
                }
                context.Ouput.Push(lastElement);
            }
            context.Ouput.Push(element);
            context.TokenPosition++;
            return(true);
        }