Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 /*
  * 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;
 }