Example #1
0
    public void Test10()
    {
        string a = ")((()";

        //)((
        Assert.AreEqual(false, Parentheses.ValidParentheses(a));
    }
Example #2
0
    public void Test11()
    {
        string a = "((2=2))(((1 = 1)('a' = 'c'))(8 7 8))";

        //
        Assert.AreEqual(true, Parentheses.ValidParentheses(a));
    }
Example #3
0
    public void Test7()
    {
        string a = "()())";

        //)
        Assert.AreEqual(false, Parentheses.ValidParentheses(a));
    }
Example #4
0
    public void Test9()
    {
        string a = "(";

        //(
        Assert.AreEqual(false, Parentheses.ValidParentheses(a));
    }
Example #5
0
    public void Test1()
    {
        string a = "(())((()())())";

        //
        Assert.AreEqual(true, Parentheses.ValidParentheses(a));
    }
Example #6
0
    public void Test3()
    {
        string a = "))()(";

        //))(
        Assert.AreEqual(false, Parentheses.ValidParentheses(a));
    }
Example #7
0
        public void TestMethodParenthesesFalse()
        {
            string s         = "((1+3)((4+(3-5)))";
            bool   inBalance = false;
            bool   result    = Parentheses.CheckParentheses(s);

            Assert.AreEqual(inBalance, result);
        }
Example #8
0
        public void Given_a_string_when_retrieve_then_return_the_length_of_the_longest_valid_parentheses(
            string s, int expected)
        {
            var soution = new Parentheses();
            var result  = soution.LongestValidParentheses(s);

            Assert.Equal(expected, result);
        }
        public void DeleteTwoOuterParentheses(string InputValue, string ExceptValue)
        {
            //Act
            var rop = new Parentheses().RemoveOuterParentheses(InputValue);

            //Assert
            Assert.Equal(ExceptValue, rop);
        }
Example #10
0
        public void TestParenthesesIsBalanced()
        {
            var list = new List <string> {
                "((1+3)()(4+(3-5)))"
            };

            foreach (var s in list)
            {
                Assert.True(Parentheses.isBalanced(s));
            }
        }
Example #11
0
 public void Forest_Equal()
 {
     for (int i = 0; i < pars.Count; i++)
     {
         Forest p  = new Parentheses(pars[i]);
         Forest b  = new LeftRight(lefts[i], rights[i]);
         Forest np = new Parentheses(nPars[i]);
         Forest nb = new LeftRight(nLefts[i], nRights[i]);
         Assert.AreEqual(p, b);
         Assert.AreNotEqual(np, nb);
     }
 }
Example #12
0
        public void TestParenthesesIsNotBalanced()
        {
            var list = new List <string>
            {
                "((())"
            };

            foreach (var s in list)
            {
                Assert.False(Parentheses.isBalanced(s));
            }
        }
Example #13
0
        public static Parentheses Parse(string input)
        {
            var tokens = new List <Token>();

            foreach (var ch in input.StripChars(" \r\n"))
            {
                if (char.IsDigit(ch))
                {
                    tokens.Add(new Number(ch - '0'));
                }
                else if (ch == '+')
                {
                    tokens.Add(new Add());
                }
                else if (ch == '*')
                {
                    tokens.Add(new Multiply());
                }
                else if (ch == '(')
                {
                    tokens.Add(new ParentheseOpen());
                }
                else if (ch == ')')
                {
                    tokens.Add(new ParentheseClose());
                }
            }
            while (tokens.Any(t => t is ParentheseOpen || t is ParentheseClose))
            {
                var start = 0;
                for (var pos = 0; pos < tokens.Count; pos++)
                {
                    if (tokens[pos] is ParentheseOpen)
                    {
                        start = pos;
                    }
                    else if (tokens[pos] is ParentheseClose)
                    {
                        var elements  = 1 + pos - start;
                        var operation = new Parentheses(tokens.Skip(start + 1).Take(elements - 2).ToArray());
                        tokens.RemoveRange(start, elements);
                        tokens.Insert(start, operation);
                        break;
                    }
                }
            }
            return(new Parentheses(tokens.ToArray()));
        }
Example #14
0
        IExpression ParsePrimitive()
        {
            var pos = CurrentPosition;

            if (CurrentToken.Type == TokenType.NumberLiteral)
            {
                var lexeme = CurrentToken.Lexeme;
                ReadNextToken();
                return(ParseExpressionType(new Number(pos, lexeme)));
            }
            if (CurrentToken.Type == TokenType.StringLiteral)
            {
                var lexeme = CurrentToken.Lexeme;
                ReadNextToken();
                return(ParseExpressionType(new StringLiteral(pos, lexeme)));
            }
            if (CurrentToken.Type == TokenType.Identifier)
            {
                var lexeme = CurrentToken.Lexeme;
                ReadNextToken();
                return(ParseExpressionType(new Identifier(pos, lexeme)));
            }
            if (SkipIf("("))
            {
                var parentheses = new Parentheses(pos, ParseExpression());
                Expect(")");
                return(ParseExpressionType(parentheses));
            }
            if (SkipIf("["))
            {
                var elements = new List <IExpression>();
                if (!SkipIf("]"))
                {
                    elements.Add(ParseExpression());
                    while (SkipIf(","))
                    {
                        elements.Add(ParseExpression());
                    }
                    Expect("]");
                }
                return(new ArrayLiteral(pos, elements));
            }
            throw MakeError($"Ожидали идентификатор, число или открывающую скобку, получили {CurrentToken}");
        }
Example #15
0
        IExpression ParsePrimitive()
        {
            var pos = CurrentPosition;

            if (SkipIf("("))
            {
                var expression = new Parentheses(pos, ParseExpression());
                Expect(")");
                return(ParseExpressionType(expression));
            }
            if (IsType(TokenType.NumberLiteral))
            {
                var lexeme = CurrentToken.Lexeme;
                ReadNextToken();
                return(ParseExpressionType(new Number(pos, lexeme)));
            }
            if (IsType(TokenType.Identifier))
            {
                var lexeme = CurrentToken.Lexeme;
                ReadNextToken();
                return(ParseExpressionType(new Identifier(pos, lexeme)));
            }
            throw MakeError($"Ожидали идентификатор, число или скобку, получили {CurrentToken}");
        }
Example #16
0
 void IExpressionVisitor.Visit(Parentheses This)
 {
     This.InnerExpression.AcceptVisitor(this);
 }
Example #17
0
 public void When_StringContainsOpeningAndClosingBraces_Expect_IsValidAsFalse(string s, bool isValid)
 {
     Assert.True(Parentheses.IsValid(s) == isValid);
 }
 public bool Are_parens_paired_correctly(string input) =>
 Parentheses.DoesEachParenHaveItsPair(input);
 public void Correct_Null_ArgumentNullException()
 {
     Assert.Throws <ArgumentNullException>(() => Parentheses.Correct(null));
 }
 public void SampleTest1()
 {
     Assert.AreEqual(true, Parentheses.ValidParentheses("()"));
 }
Example #21
0
 public object VisitParentheses(Parentheses parentheses)
 {
     return(Calc(parentheses.Expr));
 }
 public void SampleTest2()
 {
     Assert.AreEqual(false, Parentheses.ValidParentheses(")(((("));
 }
Example #23
0
 public static string GetParenthesesExpresstionType(Parentheses expression, VHDLCompilerInterface compiler)
 {
     return(GetExpressionType(expression.Expression, compiler));
 }
Example #24
0
 public TypeRef VisitParentheses(Parentheses expression)
 {
     return(CompileExpression(expression.Expr));
 }
Example #25
0
 public void VisitParentheses(Parentheses parentheses)
 {
     CompileExpression(parentheses.Expr);
 }
 public void ShouldReturnTrueWhenGivenValidStringOfPararentheses(string parentheses)
 {
     Assert.True(Parentheses.ValidParentheses(parentheses));
 }
Example #27
0
        private Expression primary()
        {
            string text;

            switch (lookahead)
            {
            case TokenType.PLACEHOLDER:
                text = accept(TokenType.PLACEHOLDER);
                int index;
                try
                {
                    index = Convert.ToInt32(text.Substring(1)) - 1;
                }
                catch (FormatException ex)
                {
                    throw new ArgumentException("illegal placeholder " + text);
                }
                if (index < 0 || index > parameters.Count - 1)
                {
                    throw new ArgumentException("illegal placeholder " + text);
                }
                return(parameters[index]);

            case TokenType.LPAREN:
                accept(TokenType.LPAREN);
                Expression expr = new Parentheses(expression(0));
                accept(TokenType.RPAREN);
                return(expr);

            case TokenType.DECIMAL_LITERAL:
                text = accept(TokenType.DECIMAL_LITERAL);
                return(new DecBasedInteger(text));

            case TokenType.BASED_LITERAL:
                text = accept(TokenType.BASED_LITERAL);
                return(new BasedLiteral(text));

            case TokenType.STRING_LITERAL:
                text = accept(TokenType.STRING_LITERAL);
                return(new StringLiteral(text.Substring(1, text.Length - 1)));

            case TokenType.CHARACTER_LITERAL:
                text = accept(TokenType.CHARACTER_LITERAL);
                return(new CharacterLiteral(text[1]));

            case TokenType.BINARY_BIT_STRING_LITERAL:
                text = accept(TokenType.BINARY_BIT_STRING_LITERAL);
                return(new BinaryStringLiteral(text.Substring(2, text.Length - 1)));

            case TokenType.HEX_BIT_STRING_LITERAL:
                text = accept(TokenType.HEX_BIT_STRING_LITERAL);
                return(new HexStringLiteral(text.Substring(2, text.Length - 1)));

            case TokenType.OCTAL_BIT_STRING_LITERAL:
                text = accept(TokenType.OCTAL_BIT_STRING_LITERAL);
                return(new OctalStringLiteral(text.Substring(2, text.Length - 1)));

            default:
                string errorToken = lookahead.ToString();
                accept(lookahead);
                throw new ArgumentException("illegal primary " + errorToken);
            }
        }
Example #28
0
 public void When_StringContainsOddLength_Expect_IsValidAsFalse(string s, bool isValid)
 {
     Assert.True(Parentheses.IsValid(s) == isValid);
 }
 public void ShouldReturnFalseWhenGivenInValidStringOfPararentheses(string parentheses)
 {
     Assert.False(Parentheses.ValidParentheses(parentheses));
 }
Example #30
0
 public void When_StringIsEmpty_Expect_IsValidAsFalse(string s, bool isValid)
 {
     Assert.True(Parentheses.IsValid(s) == isValid);
 }