private DefineVariableNode ParseDefineVariable(out AssignNode assign, bool haveAssign = true, AccessLevel accessLevel = AccessLevel.Local, bool isStatic = false) { assign = null; bool isArray = false; byte rankNum = 1; _lexer.Match(TokenType.Identifer); //TODO:使用Match函数报错 Token type = _lexer.NextToken; if (_lexer.MatchNext("[")) { _lexer.Next(); for (; !_lexer.Match("]"); _lexer.Next()) { if (_lexer.Match(",")) { rankNum++; } else { return(null); //TODO:报错 无效的秩说明符:应为","或"]" } } _lexer.MatchNow("]"); isArray = true; } _lexer.Match(TokenType.Identifer); //TODO:使用Match函数报错 Token name = _lexer.NextToken; _lexer.Next(); DefineVariableNode defineVariable = _syntaxFactory.GetDefineVariableNode(name, type, accessLevel, isStatic, isArray, rankNum); if (_lexer.NextTokenContent == ";") { _lexer.Next(); return(defineVariable); } if (!haveAssign) { return(defineVariable); } _lexer.Back(); assign = ParseAssign(); return(defineVariable); }