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); }
void Test(string str, bool result) { Assert.AreEqual(result, BracketExp.Check(str)); }