亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? parsell1.cpp

?? 編譯原理學習使用的代碼 內容有從詞法分析到中間代碼生成的代碼 并且含有注釋
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************/
/* 文件 parseLL1.cpp								*/
/* 說明 類pascal編譯器的語法分析器實現				*/
/* 主題 編譯器結構:原理和實例						*/
/* 說明 采用LL1分析方法                             */  
/****************************************************/

/************  該文件所包含的頭文件  ****************/

#include "globals.h"	/* 該頭文件定義了全局類與變量 */

#include "util.h"		/* 該頭文件定義了功能函數 */

#include "string.h"

#include "scanner.h"	/* 該頭文件定義了詞法掃描器界面 */

#include "parseLL1.h"	/* 該頭文件定義了語法分析器界面 */


/*當前單詞*/
TokenType  currentToken;
/*當前單詞行號,用于給出錯誤提示信息*/
extern int  lineno;
/*LL1分析表*/
int LL1Table[TABLESIZE][TABLESIZE];
/*紀錄當前語法樹節點*/
TreeNode  *currentP=NULL;

/*為保存類型需要的臨時變量*/
DecKind  *temp=NULL;
/*保存當前指針,以便修改后,將其恢復*/
TreeNode  *saveP =	NULL;

/*紀錄表達式中,未匹配的左括號數目*/
int  expflag = 0;

/*判斷簡單表達式處理結束,整個表達式是否處理結束標識*/
/*當是條件表達式時,取假值,簡單表達式時,取真值*/
/*用于函數preocess84*/
int  getExpResult = TRUE; 

/*僅用于數組變量,故初始化為假,遇到數組變量時,將其
  改變為真,以便在函數process84中,即算術表達式結束時,
  從語法樹棧中彈出相應指針,將數組下標表達式的結構鏈入
  節點中*/
int  getExpResult2 = FALSE;


/*符號棧頂指針*/
StackNode *StackTop;
/*棧空標志*/
int STACKEMPTY; 

/*語法樹棧頂指針*/
StackNodePA  *StackTopPA;
/*棧空標志*/
int  paSTACKEMPTY;

/*操作符棧的棧頂指針*/
StackNodeP  *OpStackTop=NULL;
/*操作符棧空標志*/
int OpSTACKEMPTY = TRUE;  

/*操作數棧的棧頂指針*/
StackNodeP  *NumStackTop=NULL;
/*操作數棧空標志*/
int NumSTACKEMPTY = TRUE;



/************<語法分析功能函數> **************/

/********************************************************/
/* 函數名  CreatLL1Table								*/
/* 功  能  創建LL1分析表								*/
/* 說  明  初始數組(表)中的每一項都為0;根據LL1文法   */
/*         給數組賦值(填表);填好后,若值為0,		*/
/*         表示無產生式可選,其他,為選中的產生式  		*/
/********************************************************/

void CreatLL1Table()
{ int i,j;
  
  /*初始化LL1表元素*/  
  for (i=0;i<TABLESIZE;i++)
	  for (j=0;j<TABLESIZE;j++)
	     LL1Table[i][j]=0;

  LL1Table	[Program][PROGRAM]  =			1;

  LL1Table	[ProgramHead][PROGRAM]  =		2;

  LL1Table	[ProgramName][ID]	   =		3;
  
  LL1Table	[DeclarePart][TYPE]=			4;
  LL1Table	[DeclarePart][VAR]=				4;
  LL1Table	[DeclarePart][PROCEDURE]=		4;
  LL1Table	[DeclarePart][BEGIN]=			4;
  
  LL1Table	[TypeDec][VAR]=					5;
  LL1Table	[TypeDec][PROCEDURE]=			5;
  LL1Table	[TypeDec][BEGIN]=				5;
  
  LL1Table	[TypeDec][TYPE]=				6;
  
  LL1Table	[TypeDeclaration][TYPE]=		7;
  
  LL1Table	[TypeDecList][ID]=				8;
  
  LL1Table	[TypeDecMore][VAR]=				9;
  LL1Table	[TypeDecMore][PROCEDURE]=		9;
  LL1Table	[TypeDecMore][BEGIN]=			9;

  
  LL1Table	[TypeDecMore][ID]=				10;
  
  LL1Table	[TypeId][ID]=					11;
  
  LL1Table	[TypeName][INTEGER]=			12;
  LL1Table	[TypeName][CHAR]=				12;
  
  LL1Table	[TypeName][ARRAY]=				13;
  LL1Table	[TypeName][RECORD]=				13;
  
  LL1Table	[TypeName][ID]=					14;
  
  LL1Table	[BaseType][INTEGER]=			15;
  
  LL1Table	[BaseType][CHAR]=				16;
  
  LL1Table	[StructureType][ARRAY]=			17;
  
  LL1Table	[StructureType][RECORD]=		18;
  
  LL1Table	[ArrayType][ARRAY]=				19;
  
  LL1Table	[Low][INTC]=					20;

  LL1Table	[Top][INTC]=					21;

  LL1Table	[RecType][RECORD]=				22;
  
  LL1Table	[FieldDecList][INTEGER]=		23;
  LL1Table	[FieldDecList][CHAR]=			23;
  
  LL1Table	[FieldDecList][ARRAY]=			24;
  
  LL1Table	[FieldDecMore][END]=			25;
  
  LL1Table	[FieldDecMore][INTEGER]=		26;
  LL1Table	[FieldDecMore][CHAR]=			26;
  LL1Table	[FieldDecMore][ARRAY]=			26;
  
  LL1Table	[IdList][ID]=					27;
  
  LL1Table	[IdMore][SEMI]=					28;
  
  LL1Table	[IdMore][COMMA]=				29;
  
  LL1Table	[VarDec][PROCEDURE]=			30;
  LL1Table	[VarDec][BEGIN]=				30;
  
  LL1Table	[VarDec][VAR]=					31;
  
  LL1Table	[VarDeclaration][VAR]=			32;
  
  LL1Table	[VarDecList][INTEGER]=			33;
  LL1Table	[VarDecList][CHAR]=				33;
  LL1Table	[VarDecList][ARRAY]=			33;
  LL1Table	[VarDecList][RECORD]=			33;
  LL1Table	[VarDecList][ID]=				33;
  
  LL1Table	[VarDecMore][PROCEDURE]=		34;
  LL1Table	[VarDecMore][BEGIN]=			34;

  
  LL1Table	[VarDecMore][INTEGER]=			35;
  LL1Table	[VarDecMore][CHAR]=				35;
  LL1Table	[VarDecMore][ARRAY]=			35;
  LL1Table	[VarDecMore][RECORD]=			35;
  LL1Table	[VarDecMore][ID]=				35; 
  
  LL1Table	[VarIdList][ID]=				36;
  
  LL1Table	[VarIdMore][SEMI]=				37;
  
  LL1Table	[VarIdMore][COMMA]=				38;
  
  LL1Table	[ProcDec][BEGIN]=				39;
  
  LL1Table	[ProcDec][PROCEDURE]=			40;
  
  LL1Table	[ProcDeclaration][PROCEDURE]=	41;

  LL1Table  [ProcDecMore][BEGIN]=			42;

  LL1Table  [ProcDecMore][PROCEDURE]=		43;
  
  LL1Table	[ProcName][ID]=					44;
  
  LL1Table	[ParamList][RPAREN]=			45;
  
  LL1Table	[ParamList][INTEGER]=			46;
  LL1Table	[ParamList][CHAR]=				46;
  LL1Table	[ParamList][ARRAY]=				46;
  LL1Table	[ParamList][RECORD]=			46;
  LL1Table	[ParamList][ID]=				46;
  LL1Table	[ParamList][VAR]=				46;
  
  LL1Table	[ParamDecList][INTEGER]=		47;
  LL1Table	[ParamDecList][CHAR]=			47;
  LL1Table	[ParamDecList][ARRAY]=			47;
  LL1Table	[ParamDecList][RECORD]=			47;
  LL1Table	[ParamDecList][ID]=				47;
  LL1Table	[ParamDecList][VAR]=			47;

  LL1Table	[ParamMore][RPAREN]=			48;

  LL1Table	[ParamMore][SEMI]=				49;
 
  LL1Table	[Param][INTEGER]=				50;
  LL1Table	[Param][CHAR]=					50;
  LL1Table	[Param][ARRAY]=					50;
  LL1Table	[Param][RECORD]=				50;
  LL1Table	[Param][ID]=					50;
  
  LL1Table	[Param][VAR]=					51;
  
  LL1Table	[FormList][ID]=					52;
  
  LL1Table	[FidMore][SEMI]=				53;
  LL1Table	[FidMore][RPAREN]=				53;

  LL1Table	[FidMore][COMMA]=				54;
  
  LL1Table	[ProcDecPart][TYPE]=			55;
  LL1Table	[ProcDecPart][VAR]=				55;
  LL1Table	[ProcDecPart][PROCEDURE]=		55;
  LL1Table	[ProcDecPart][BEGIN]=			55;
  
  LL1Table	[ProcBody][BEGIN]=				56;
  
  LL1Table	[ProgramBody][BEGIN]=			57;
  
  LL1Table	[StmList][ID]=					58;
  LL1Table	[StmList][IF]=					58;
  LL1Table	[StmList][WHILE]=				58;
  LL1Table	[StmList][RETURN]=				58;
  LL1Table	[StmList][READ]=				58;
  LL1Table	[StmList][WRITE]=				58;

  LL1Table	[StmMore][END]=					59;
  LL1Table	[StmMore][ENDWH]=				59;
  LL1Table  [StmMore][ELSE]=				59;
  LL1Table  [StmMore][FI]=					59;

  LL1Table	[StmMore][SEMI]=				60;

  LL1Table	[Stm][IF]=						61;
  
  LL1Table	[Stm][WHILE]=					62;
  
  LL1Table	[Stm][READ]=					63;
  
  LL1Table	[Stm][WRITE]=					64;
  
  LL1Table	[Stm][RETURN]=					65;
  
  LL1Table	[Stm][ID]=						66;
  
  LL1Table	[AssCall][ASSIGN]=				67;
  LL1Table	[AssCall][LMIDPAREN]=			67;
  LL1Table	[AssCall][DOT]= 				67;

  
  LL1Table	[AssCall][LPAREN]=				68;
  
  LL1Table	[AssignmentRest][ASSIGN]=		69;
  LL1Table  [AssignmentRest][LMIDPAREN]=    69;
  LL1Table  [AssignmentRest][DOT]=          69;
  
  LL1Table	[ConditionalStm][IF]=			70;
  

  LL1Table	[LoopStm][WHILE]=				71;
  
  LL1Table	[InputStm][READ]=				72;

  LL1Table	[InVar][ID]=					73;

  LL1Table	[OutputStm][WRITE]=				74;
  
  LL1Table	[ReturnStm][RETURN]=			75;
  
  LL1Table	[CallStmRest][LPAREN]=			76;
  
  LL1Table	[ActParamList][RPAREN]=			77;
  
  LL1Table	[ActParamList][ID]=				78;
  LL1Table	[ActParamList][INTC]=			78;
  LL1Table  [ActParamList][LPAREN]=         78;
  
  LL1Table	[ActParamMore][RPAREN]=			79;
  
  LL1Table	[ActParamMore][COMMA]=			80;
  
  LL1Table	[RelExp][LPAREN]=				81;
  LL1Table	[RelExp][INTC]=					81;
  LL1Table	[RelExp][ID]=					81;
  
  LL1Table	[OtherRelE][LT]=				82;
  LL1Table	[OtherRelE][EQ]=				82;

  LL1Table	[Exp][LPAREN]=					83;
  LL1Table	[Exp][INTC]=					83;
  LL1Table	[Exp][ID]=						83;

  LL1Table	[OtherTerm][LT]=				84;
  LL1Table	[OtherTerm][EQ]=				84;
  LL1Table	[OtherTerm][THEN]=				84;
  LL1Table	[OtherTerm][DO]=				84;
  LL1Table	[OtherTerm][RPAREN]=			84;
  LL1Table	[OtherTerm][END]=				84;
  LL1Table	[OtherTerm][SEMI]=				84;
  LL1Table	[OtherTerm][COMMA]=				84;
  LL1Table	[OtherTerm][ENDWH]=				84;
  LL1Table	[OtherTerm][ELSE]=				84;
  LL1Table	[OtherTerm][FI]=				84;
  LL1Table  [OtherTerm][RMIDPAREN]=			84;
  
  
  LL1Table	[OtherTerm][PLUS]=				85;
  LL1Table	[OtherTerm][MINUS]=				85;

  LL1Table	[Term][LPAREN]=					86;
  LL1Table	[Term][INTC]=					86;
  LL1Table	[Term][ID]=						86;

  LL1Table	[OtherFactor][PLUS]=			87;
  LL1Table	[OtherFactor][MINUS]=			87;
  LL1Table	[OtherFactor][LT]=				87;
  LL1Table	[OtherFactor][EQ]=				87;
  LL1Table	[OtherFactor][THEN]=			87;
  LL1Table	[OtherFactor][ELSE]=			87;
  LL1Table	[OtherFactor][FI]=				87;
  LL1Table	[OtherFactor][DO]=				87;
  LL1Table	[OtherFactor][ENDWH]=			87;
  LL1Table	[OtherFactor][RPAREN]=			87;
  LL1Table	[OtherFactor][END]=				87;
  LL1Table	[OtherFactor][SEMI]=			87;
  LL1Table	[OtherFactor][COMMA]=			87;
  LL1Table  [OtherFactor][RMIDPAREN]=		87;

  LL1Table	[OtherFactor][TIMES]=			88;
  LL1Table	[OtherFactor][OVER]=			88;

  LL1Table	[Factor][LPAREN]=				89;

  LL1Table	[Factor][INTC]=					90;
  
  LL1Table	[Factor][ID]=					91;
  
  LL1Table  [Variable][ID]=					92;

  LL1Table  [VariMore][ASSIGN]=				93;
  LL1Table  [VariMore][TIMES]=				93;
  LL1Table  [VariMore][OVER]=				93;
  LL1Table  [VariMore][PLUS]=				93;
  LL1Table  [VariMore][MINUS]=				93;
  LL1Table  [VariMore][LT]=				    93;
  LL1Table  [VariMore][EQ]=					93;
  LL1Table  [VariMore][THEN]=				93;
  LL1Table  [VariMore][ELSE]=				93;
  LL1Table  [VariMore][FI]=					93;
  LL1Table  [VariMore][DO]=					93;
  LL1Table  [VariMore][ENDWH]=				93;
  LL1Table  [VariMore][RPAREN]=				93;
  LL1Table  [VariMore][END]=				93;
  LL1Table  [VariMore][SEMI]=				93;
  LL1Table  [VariMore][COMMA]=				93;
  LL1Table  [VariMore][RMIDPAREN]=			93;

  LL1Table  [VariMore][LMIDPAREN]=			94;
  
  LL1Table  [VariMore][DOT]=				95;

  LL1Table  [FieldVar][ID]=                 96;

  LL1Table  [FieldVarMore][ASSIGN]=			97;
  LL1Table  [FieldVarMore][TIMES]=          97;
  LL1Table  [FieldVarMore][OVER]=			97;
  LL1Table  [FieldVarMore][PLUS]=           97;
  LL1Table  [FieldVarMore][MINUS]=          97;
  LL1Table  [FieldVarMore][LT]=				97;
  LL1Table  [FieldVarMore][EQ]=				97;
  LL1Table  [FieldVarMore][THEN]=			97;
  LL1Table  [FieldVarMore][ELSE]=			97;
  LL1Table  [FieldVarMore][FI]=				97;
  LL1Table  [FieldVarMore][DO]=				97;
  LL1Table  [FieldVarMore][ENDWH]=          97;
  LL1Table  [FieldVarMore][RPAREN]=         97;
  LL1Table  [FieldVarMore][END]=			97;
  LL1Table  [FieldVarMore][SEMI]=			97;
  LL1Table  [FieldVarMore][COMMA]=          97;

  LL1Table  [FieldVarMore][LMIDPAREN]=      98;

  LL1Table	[CmpOp][LT]=					99;
  
  LL1Table	[CmpOp][EQ]=					100;
  
  LL1Table	[AddOp][PLUS]=					101;
  
  LL1Table	[AddOp][MINUS]=					102;
  
  LL1Table	[MultOp][TIMES]=				103;
  
  LL1Table	[MultOp][OVER]=					104;

}

/********************************************************************/
/* 函數名 gettoken					     							*/
/* 功  能 從Token序列中取出一個Token	                            */										
/* 說  明 從文件中存的Token序列中依次取一個單詞,作為當前單詞.      */
/********************************************************************/
int fpnum=0;
void gettoken(TokenType *p)
{
	FILE *fp2;
   /*按只讀方式打開文件*/
   fp2=fopen("c:\\Tokenlist","rb");
   if (fp==NULL)   
         {  printf("cannot create file Tokenlist!\n");
              exit(0);
	     }  
   fseek(fp2,fpnum*sizeof(TokenType),0);
   fread(p,sizeof(TokenType),1,fp2);
   fpnum++;
   fclose(fp2);
}


/********************************************************************/
/* 函數名 syntaxError												*/
/* 功  能 語法錯誤處理函數											*/
/* 說  明 將函數參數message指定的錯誤信息格式化寫入列表文件listing	*/
/*		  設置錯誤追蹤標志Error為TRUE								*/
/********************************************************************/
static void syntaxError(char * message)

{ fprintf(listing,"\n>>> ");
  
  /* 將出錯行號lineno和語法錯誤信息message格式化寫入文件listing */
  fprintf(listing,"Syntax error at line %d: %s",lineno,message);

  /* 設置錯誤追蹤標志Error為TRUE,防止錯誤進一步傳遞 */
  Error = TRUE;
}

void process1()
{  
   Push(2, DOT);
   Push(1, ProgramBody);
   Push(1, DeclarePart);
   Push(1, ProgramHead);
    
}

/********************************************************************/
/* 函數名 process2() 				     							*/
/* 功  能 處理程序頭,并生成程序頭節點Phead.                        */										
/* 說  明 產生式為:PROGRAM  ProgramName							*/
/********************************************************************/
void process2()
{ 	
	Push(1,ProgramName);
    Push(2,PROGRAM);
	
	TreeNode  **t=PopPA();
	currentP=newPheadNode();  
    (*t)=currentP;
	/*程序頭節點沒有兄弟節點,下面的聲明用用根節點的child[1]指向*/

}

void process3()
{   
	Push(2,ID);
  
	strcpy( currentP->name[0] ,currentToken.Sem);
    currentP->idnum++;
}

void process4()
{ 
	Push(1,ProcDec);
    Push(1,VarDec);
	Push(1,TypeDec);
}
void process5()
{
}
void process6()
{ 
    Push(1,TypeDeclaration);
   
}

void process7()
{ 
	Push(1,TypeDecList);
    Push(2,TYPE);

	TreeNode  **t=PopPA();  
    currentP = newTypeNode();  /*生成Type作為標志的結點,它的子結點都是
    						     類型聲明*/
   	(*t) = currentP;    /*頭結點的兄弟結點指針指向此結點*/
	PushPA(&((*currentP).sibling));  /* 壓入指向變量聲明節點的指針*/
	PushPA(&((*currentP).child[0])); /*壓入指向第一個類型聲明節點的指針*/
}

void process8()
{ 
	Push(1,TypeDecMore);
    Push(2,SEMI);
	Push(1,TypeName);
	Push(2,EQ);
	Push(1,TypeId);

	TreeNode  **t=PopPA();
    currentP = newDecNode(); /*生成一個表示類型聲明的結點,
	                           不添任何信息*/

	(*t) = currentP; /*若是第一個,則是Type類型的子結點指向當前結點,
					   否則,是上一個類型聲明的兄弟結點*/

    PushPA(&((*currentP).sibling)); 
}

void process9()
{
	PopPA();
}

void process10()
{  
   Push(1,TypeDecList);

}

void process11()
{  
	Push(2,ID);
	
    strcpy( (*currentP).name[0] ,currentToken.Sem);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
老鸭窝一区二区久久精品| 欧美成人一区二区| 亚洲欧美电影院| 色综合中文字幕| 中文字幕一区二区三区不卡在线 | 成人午夜视频在线| 18涩涩午夜精品.www| 99久久精品国产网站| 最好看的中文字幕久久| 一本久久a久久免费精品不卡| 亚洲人成网站影音先锋播放| 91免费观看视频在线| 三级在线观看一区二区| 欧美成人高清电影在线| 欧美一区二区三区免费在线看 | 中文字幕在线观看一区二区| 在线免费观看日本欧美| 日日骚欧美日韩| 国产视频不卡一区| 91电影在线观看| 久久国产尿小便嘘嘘尿| 亚洲欧美日韩中文播放| 欧美白人最猛性xxxxx69交| a级精品国产片在线观看| 午夜视频在线观看一区| 国产精品免费免费| 欧美r级电影在线观看| 在线亚洲精品福利网址导航| 激情图片小说一区| 午夜免费欧美电影| 国产一区二区精品久久| 一区二区欧美在线观看| 色婷婷综合五月| 欧美在线影院一区二区| 69久久夜色精品国产69蝌蚪网| 国内不卡的二区三区中文字幕| 日本一区二区不卡视频| 欧美日韩国产美女| www.欧美日韩国产在线| 日本麻豆一区二区三区视频| 国产精品视频一二三区 | 日韩一区二区电影网| 99精品热视频| 91麻豆成人久久精品二区三区| 青草国产精品久久久久久| 亚洲免费观看高清完整版在线| 日本一区二区三区视频视频| 国产精品国产三级国产aⅴ入口 | 日韩毛片精品高清免费| 国产精品美女一区二区三区| 国产精品视频一二三| 欧美国产精品一区| 最新高清无码专区| 中文字幕在线不卡视频| 亚洲视频免费在线| 亚洲成在线观看| 经典三级一区二区| 在线国产电影不卡| 99久久精品99国产精品| 欧美这里有精品| 日本不卡的三区四区五区| 91猫先生在线| 五月激情六月综合| 亚洲一区二区三区爽爽爽爽爽| 一区二区三区四区在线| 亚洲国产视频直播| 日本免费新一区视频| 成人黄色电影在线| 在线成人免费观看| 中文字幕在线不卡| 国产精品国产a| 日本美女一区二区三区视频| 国产99久久久国产精品潘金| 91成人免费在线| 成人免费一区二区三区视频| 美女被吸乳得到大胸91| 国产电影精品久久禁18| 欧美电影在线免费观看| 中文字幕国产一区二区| 国精产品一区一区三区mba视频| 91蜜桃在线免费视频| 久久精品视频一区二区三区| 亚洲成人动漫在线免费观看| 粉嫩在线一区二区三区视频| 欧美老年两性高潮| 亚洲精品福利视频网站| 国产精品一线二线三线精华| 欧美久久久久免费| 午夜精品在线看| 9191国产精品| 日本aⅴ免费视频一区二区三区| 欧美性色综合网| 亚洲在线一区二区三区| 欧美色图一区二区三区| 亚洲一区二区美女| 欧美四级电影网| 久久成人羞羞网站| 国产精品乱人伦中文| 91久久免费观看| 精品制服美女丁香| 亚洲精品在线免费播放| 国产精品99久久久久久似苏梦涵| 午夜国产精品一区| 欧美成人在线直播| 不卡的av中国片| 亚洲综合免费观看高清完整版 | 亚洲欧洲国产日本综合| 成人精品国产一区二区4080| 亚洲欧洲日韩综合一区二区| 欧美日韩一级片网站| 亚洲欧美电影一区二区| 欧美午夜一区二区| 亚洲国产精品久久人人爱蜜臀| 欧美三级资源在线| 麻豆91在线观看| 国产精品系列在线| 欧美撒尿777hd撒尿| 免费看欧美女人艹b| 久久蜜桃香蕉精品一区二区三区| 91麻豆免费观看| 黄页视频在线91| 亚洲午夜激情av| 久久网站最新地址| 欧美日韩中文字幕精品| 国产成人在线视频网站| 无码av中文一区二区三区桃花岛| 国产精品免费视频网站| 精品欧美一区二区在线观看| 在线精品视频一区二区三四| 国产福利一区二区三区视频| 亚洲影视在线播放| 亚洲乱码国产乱码精品精可以看| 欧美激情综合在线| 国产亚洲精品aa| 亚洲精品一区在线观看| 日韩亚洲欧美在线观看| 欧美日本在线看| 欧美一级片在线看| 日韩一级大片在线观看| 日韩午夜电影在线观看| 欧美日韩美少妇| 欧美老肥妇做.爰bbww| 91国偷自产一区二区三区成为亚洲经典| 国产在线精品一区二区夜色 | 一区二区日韩电影| 五月激情综合网| 久久精品噜噜噜成人av农村| 久久99精品久久久| 国产麻豆日韩欧美久久| 国产激情一区二区三区桃花岛亚洲| 久久成人久久鬼色| 成人国产精品免费| 日本高清不卡在线观看| 欧美日韩国产一区二区三区地区| 91精品在线麻豆| 久久久久久麻豆| 亚洲另类一区二区| 日本vs亚洲vs韩国一区三区二区| 精品亚洲免费视频| 99国产精品国产精品久久| 欧美亚洲国产bt| 久久综合999| 亚洲宅男天堂在线观看无病毒| 日本欧美加勒比视频| 成人aaaa免费全部观看| 欧美色成人综合| 久久久久国产精品免费免费搜索| 国产精品狼人久久影院观看方式| 亚洲影院免费观看| 国产精品资源网站| 欧美军同video69gay| 中文字幕亚洲一区二区av在线| 一区二区三区免费网站| 国产一区二区三区免费| 欧美伦理视频网站| 亚洲人成影院在线观看| 国产激情精品久久久第一区二区| 欧美性欧美巨大黑白大战| 欧美激情在线一区二区| 久国产精品韩国三级视频| 欧美日韩免费观看一区二区三区| 久久综合色一综合色88| 日韩国产成人精品| 欧美人体做爰大胆视频| 亚洲最大成人网4388xx| av中文字幕亚洲| 中文欧美字幕免费| 国产91精品精华液一区二区三区| 91麻豆精品国产91久久久资源速度| 一区二区三区日韩欧美精品| av午夜精品一区二区三区| 国产精品网站在线播放| 成人精品电影在线观看| 国产精品欧美综合在线| 成人精品免费看| 亚洲国产高清在线| 91女人视频在线观看| 亚洲人妖av一区二区| 欧美在线看片a免费观看| 亚洲一区在线看|