Esempio n. 1
0
        BracketExp parseBracket()
        {
            BracketExp bracket = new BracketExp();

            bracket.LeftBracketToken = CurrentToken; MoveNext();
            if (!isBracketEnd(CurrentKind))
            {
                while (true)
                {
                    Exp expr = parseExp();
                    if (expr != null)
                    {
                        bracket.InneExps.Add(expr);
                    }

                    if (isBracketEnd(CurrentKind))
                    {
                        break;
                    }
                    if (CurrentKind != TokenKind.Comma)
                    {
                        error("多余的表达式元素");
                        MoveNext();
                        while (!(isBracketEnd(CurrentKind)) && CurrentKind != TokenKind.Comma)
                        {
                            MoveNext();
                        }
                    }
                    if (CurrentKind == TokenKind.Comma)
                    {
                        MoveNext();
                    }
                }
            }
            if (CurrentKind == TokenKind.RBS)
            {
                bracket.RightBracketToken = CurrentToken;
                MoveNext();
            }
            else
            {
                error("括号不匹配");
            }
            return(bracket);
        }
Esempio n. 2
0
 void Test(string str, bool result)
 {
     Assert.AreEqual(result, BracketExp.Check(str));
 }