public TKTClassModel Parse(List <Token> tokens) { this.srcTokens = tokens; tktclass = new TKTClassModel(); this.srcTokens.Add(Token.EOF); this.srcTokens.Add(Token.EOF); this.srcTokens.Add(Token.EOF); this.index = 0; while (CurrentToken.Kind != TokenKind.EOF) { /*while (CurrentToken.IsKeyIdent("使用包","使用类型","简略使用")&& NextToken.Kind == TokenKind.Colon) * { * ParseImport(); * }*/ if (CurrentToken.IsKeyIdent("使用包") && NextToken.Kind == TokenKind.Colon) { ParseImport(); } if (CurrentToken.IsKeyIdent("简略使用") && NextToken.Kind == TokenKind.Colon) { ParseSimpleUse(); } if (CurrentToken.IsKeyIdent("属于") && NextToken.Kind == TokenKind.Colon) { parseExtends(); } else if (CurrentToken.IsKeyIdent("名称") && NextToken.Kind == TokenKind.Colon) { parseName(); } else if (CurrentKind == TokenKind.Ident && CurrentText == "过程" && NextToken.Kind == TokenKind.Colon) { var ast = ParseMethod(); string typeName = tktclass.GetTypeName(); if (ast.IsContruct()) { tktclass.ContructList.Add(ast.ToContruct()); } else if (!string.IsNullOrEmpty(typeName) && ast.IsContruct(typeName)) { tktclass.ContructList.Add(ast.ToContruct()); } else { tktclass.ProcList.Add(ast); } //tktclass. //prog.Add(ast); } else if (CurrentKind == TokenKind.Ident && CurrentText == "属性" && NextToken.Kind == TokenKind.Colon) { parsePropertyPart(); } else if (CurrentToken.IsKeyIdent("约定") && NextToken.Kind == TokenKind.Colon) { parseAgreement(); } else { //error("无法识别'"+CurrentToken.GetText()+"'"); MoveNext(); } } return(tktclass); }