Пример #1
0
        public NonTerninalExp CreateCommand(List <Token> tokens)
        {
            var          closeBracketIndex = TokenHelper.GetIndexPairBracket(tokens, 0);
            List <Token> tok = tokens.GetRange(1, closeBracketIndex - 1);

            tok.Add(new Token {
                TokenType = TokenType.EmptyEndCommand, Value = "end"
            });
            BracketsCommand com = new BracketsCommand(SyntaxAnalyser.Analyse(tok));

            com.SetNext(SyntaxAnalyser.Analyse(tokens.GetRange(
                                                   closeBracketIndex + 1, tokens.Count - closeBracketIndex - 1)));
            return(com);
        }
Пример #2
0
        public NonTerninalExp CreateCommand(List <Token> tokens)
        {
            var closeParenthesisIndex = TokenHelper.GetIndexPairParanthesis(tokens, 1);

            var exp     = TerminalExpressionAnalyser.Analyse(tokens.GetRange(2, closeParenthesisIndex - 2));
            var command = new ConditionCommand(exp);

            var             closeBracketsIndex = TokenHelper.GetIndexPairBracket(tokens, closeParenthesisIndex + 1);
            BracketsCommand insideCom          = (BracketsCommand)SyntaxAnalyser.Analyse(tokens.GetRange(
                                                                                             closeParenthesisIndex + 1, tokens.Count - closeParenthesisIndex - 1));

            insideCom.SetNext(command);

            command.SetPositiveNext(insideCom);
            command.SetNegativeNext(SyntaxAnalyser.Analyse(tokens.GetRange(
                                                               closeBracketsIndex + 1, tokens.Count - closeBracketsIndex - 1)));

            return(command);
        }