protected ArgumentListNode parseArgumentList(ParenthesesToken argumentList, int argumentsNeeded) { //List<SyntaxNode> processedArguments = new List<SyntaxNode>(); ArgumentTokenListParser argumentListParser = new ArgumentTokenListParser(properties); return(argumentListParser.Parse(argumentList.Elements, argumentsNeeded)); }
public ITokenCollection Tokenize(ITokenCollection tokens) { if (!tokens.OfType <ParenthesisToken>().Any()) { return(tokens); } var result = new List <IToken>(); var parentheses = new List <IToken>(); var isParenthesisOpened = false; var scopeDepth = 0; foreach (var token in tokens) { if (isParenthesisOpened) { if (token.IsParenthesis(Parenthesis.Left)) { scopeDepth++; } else if (token.IsParenthesis(Parenthesis.Right)) { scopeDepth--; if (scopeDepth == 0) { parentheses = Tokenize(parentheses.ToTokenCollection()).ToList(); var parenthesesToken = new ParenthesesToken(new TokenCollection(parentheses)); result.Add(parenthesesToken); parentheses.Clear(); isParenthesisOpened = false; continue; } } parentheses.Add(token); } else { if (token.IsParenthesis(Parenthesis.Left)) { isParenthesisOpened = true; scopeDepth++; } else { result.Add(token); } } } return(result.ToTokenCollection()); }
public void Visit(ParenthesesToken parenthesesToken) { if (parenthesesToken.IsOpening) { AddNewParenthesesExpression(); } else { HandleClosingParenthesis(); } }
public void Visit(ParenthesesToken parenthesesToken) { mResult += parenthesesToken.IsOpening ? "(" : ")"; }
protected SyntaxNode processParenthesesToken(ParenthesesToken parentheses) { TokenListParser listParser = new TokenListParser(properties); return(listParser.parse(parentheses.Elements)); }
IEnumerable <string> ParseParenthesesToken(ParenthesesToken token) => token.Value.Select(t => ParseToken(t));
public bool Visit(ParenthesesToken token, out int precedence) { precedence = token.Opening ? 1 : -1; return(true); }