ExpBracket parseBracket() { //report("parseBracket"); ExpBracket bracket = new ExpBracket(); bracket.LeftBracketToken = tape.Current; tape.MoveNext(); if (!tape.isBracketEnd(tape.Current.Kind)) { while (true) { Exp expr = parseBinaryLogicExp(); if (expr != null) { bracket.InneExps.Add(expr); } if (tape.isBracketEnd(tape.CurrentKind)) { break; } if (tape.CurrentKind != TokenKind.Comma) { tape.error("多余的表达式元素"); tape.MoveNext(); while (!(tape.isBracketEnd(tape.CurrentKind)) && tape.CurrentKind != TokenKind.Comma) { tape.MoveNext(); } } if (tape.CurrentKind == TokenKind.Comma) { tape.MoveNext(); } } } if (tape.CurrentKind == TokenKind.RBS) { bracket.RightBracketToken = tape.Current; tape.MoveNext(); } else { tape.error("括号不匹配"); } return(bracket); }