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); }
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); }