Example #1
0
        protected ArgumentListNode parseArgumentList(ParenthesesToken argumentList, int argumentsNeeded)
        {
            //List<SyntaxNode> processedArguments = new List<SyntaxNode>();
            ArgumentTokenListParser argumentListParser = new ArgumentTokenListParser(properties);

            return(argumentListParser.Parse(argumentList.Elements, argumentsNeeded));
        }
Example #2
0
        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());
        }
Example #3
0
 public void Visit(ParenthesesToken parenthesesToken)
 {
     if (parenthesesToken.IsOpening)
     {
         AddNewParenthesesExpression();
     }
     else
     {
         HandleClosingParenthesis();
     }
 }
Example #4
0
 public void Visit(ParenthesesToken parenthesesToken)
 {
     mResult += parenthesesToken.IsOpening ? "(" : ")";
 }
Example #5
0
        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);
 }