TKTPropertyModel parseProperty(CodePostion parentPostion) { TKTPropertyModel ast = new TKTPropertyModel(); ast.Postion = CurrentToken.Postion; if (CurrentKind != TokenKind.Ident) { //error("不是正确的名称"); } else { ast.PropertyType = CurrentToken.GetText(); } MoveNext(); match(TokenKind.Colon); if (CurrentKind != TokenKind.Ident) { //error("不是正确的变量名称"); } else { ast.PropertyName = CurrentToken.GetText(); } MoveNext(); if (CurrentKind == TokenKind.Assign) { MoveNext(); skipToSemi(); //Exp exp = parseExp(); //ast.ValueExp = exp; } match(TokenKind.Semi); return(ast); }
List <Token> parseAgreementBlock(CodePostion parentPostion) { List <Token> list = new List <Token>(); while (CurrentToken.Kind != TokenKind.EOF && CurrentToken.Col > parentPostion.Col) { Token temp = parseEnumItem(); if (temp != null) { list.Add(temp); } } return(list); }
/* * Exp parseTerm() * { * if (CurrentToken.Kind == TokenKind.LBS) * { * return parseBracket(); * } * else if (CurrentToken.Kind == TokenKind.RBS) * { * //error("多余的右括号"); * MoveNext(); * return null; * } * else if (CurrentToken.IsLiteral()) * { * return parseLiteral(); * } * else if (CurrentToken.Kind == TokenKind.Ident && NextToken.Kind == TokenKind.Colon) * { * return pareNV(); * } * else if (CurrentToken.Kind == TokenKind.Ident) * { * return parseIdent(); * } * else * { * //error(CurrentToken, "无法识别的表达式"); * //MoveNext(); * return null; * } * } */ /* * Exp parseIdent() * { * FTextExp idexp = new FTextExp(); * idexp.IdentToken = CurrentToken; * MoveNext(); * return idexp; * } */ /* * Exp parseLiteral() * { * LiteralExp literalex = new LiteralExp(); * literalex.LiteralToken = CurrentToken; * MoveNext(); * return literalex; * }*/ /* * Exp pareNV() * { * NameValueExp nv = new NameValueExp(); * nv.NameToken = CurrentToken; * MoveNext(); * match(TokenKind.Colon); * Exp exp = parseExp(); * nv.ValueExp = exp; * return nv; * }*/ /* * List<Stmt> ParseFuncBody() * { * int funcBodyDeep = 2; * List<Stmt> stmtlist = new List<Stmt>(); * while (CurrentToken.Kind != TokenKind.EOF) * { * Stmt temp = parseStmt(funcBodyDeep); * if (temp != null) * { * stmtlist.Add(temp); * } * } * return stmtlist; * }*/ /* * Stmt parseStmt(int deep) * { * //report("parseStmt()"+ CurrentToken.ToString()); * Stmt stmt = null; * if (CurrentToken.Kind == TokenKind.EOF) * { * return null; * } * else if (CurrentToken.Kind == TokenKind.IF) * { * stmt = parseIf(deep); * return stmt; * } * else if (CurrentToken.Kind == TokenKind.While) * { * stmt = ParseWhile(deep); * return stmt; * } * else if (CurrentToken.Kind == TokenKind.Foreach) * { * stmt = ParseForeach(deep); * return stmt; * } * else if (CurrentToken.Kind == TokenKind.Catch) * { * stmt = ParseCatch(deep); * return stmt; * } * else if (CurrentToken.Kind == TokenKind.Semi) * { * MoveNext(); * return null; * } * else * { * stmt = ParseAssignOrExprStmt(); * } * if(stmt!=null) * { * stmt.Deep = deep; * } * return stmt; * } */ void skipBlock(CodePostion parentPostion, int deep) { //report("parseBlock()"); //BlockStmt blockStmt = new BlockStmt(); //List<Stmt> arr = new List<Stmt>(); while (CurrentToken.Kind != TokenKind.EOF && CurrentToken.Col > parentPostion.Col) { MoveNext(); //Stmt temp = parseStmt(deep+1); //if (temp != null) //{ // blockStmt.Add(temp); //} } //return blockStmt; }