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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? li.cpp

?? 設(shè)計(jì)SAMPLE語言的詞法分析器 檢查要求: a] 啟動(dòng)程序后
?? CPP
字號:

/*  
Windows 下c語言PL/0編譯程序 
在Visual C++ 6.0和Visual C.NET上運(yùn)行通過 
使用方法: 
運(yùn)行后輸入PL/0源程序文件名 
回答是否輸出虛擬機(jī)代碼 
回答是否輸出名字表 
fa.tmp輸出虛擬機(jī)代碼 
fa1.tmp輸出源文件及其各行對應(yīng)的首地址 
fa2.tmp輸出結(jié)果 
fas.tmp輸出名字表 
*/ 
#include   <stdlib.h>  
#include <stdio.h> 
#include<iostream.h>
#include "lin.h" 
#include "string.h" 
#include<string>
/* 解釋執(zhí)行時(shí)使用的棧 */ 
#define stacksize 500  






int main() 
{ 

bool nxtlev[symnum]; 
init(); /* 初始化 */ 
//fas=fopen("fas.tmp","w"); 
fa1=fopen("fa1.tmp","w"); 
printf("Input file?   "); 
fprintf(fa1,"Input file?   "); 
scanf("%s",fname); /* 輸入文件名 */ 
fin=fopen(fname,"r"); 
if(fin) 
{ 

err=0; 
cc=cx=ll=0; 
ch=' '; 
kk=al-1; 

if(-1!=getsym()) 
{ 


block(0,0,nxtlev);
 for(int i=0;i<dx;i++)
cout<<"("<<i<<") ("<<cd[i].w<<","<<cd[i].x<<","<<cd[i].y<<","<<cd[i].z<<")"<<endl; 

if(-1==block(0,0,nxtlev)) /* 調(diào)用編譯程序 */ 
{ 


fclose(fin); 
 
return 0; 
} 
 



} 
fclose(fin); 
} 
else 
{ 
printf("Can't open file!\n"); 
fprintf(fa1,"Can't open file!\n"); 

} 


return 0; 


}



/*
for(int i=0;i<10;i++)
cout<<"("<<i<<") ("<<cd[i].a<<","<<cd[i].b<<","<<cd[i].c<<","<<cd[i].d<<")"<<endl; 

*/





/* 在適當(dāng)?shù)奈恢蔑@示錯(cuò)誤 */ 
void error(int n) 
{ 
char space[81]; 
memset(space,32,81); 
space[cc-1]=0; /* 出錯(cuò)時(shí)當(dāng)前符號已經(jīng)讀完,所以cc-1 */  
//printf("****%s!%d\n",space,n); 
fprintf(fa1,"****%s!%d\n",space,n); 
err++; 

} 

/* 詞法分析,獲取一個(gè)符號 */ 
int getsym() 
{ 
int i,j,k; 
while(ch==' '||ch==10||ch==9) /* 忽略空格、換行和TAB */ 
{ 
getchdo; 
} 
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') 
{ /* 名字或保留字以a..z開頭 */ 
k=0; 
do 
{ 
if(k<al) 
{ 
a[k]=ch; 
k++; 
} 
getchdo; 
} 
while(ch>='a'&&ch<='z'||ch>='0'&&ch<='9'||ch>='A'&&ch<='Z'); 
a[k]=0; 
strcpy(id,a); 
i=0; 
j=norw-1; 
do /* 搜索當(dāng)前符號是否為保留字 */ 
{ 
k=(i+j)/2; 
 if(strcmp(id,word[k])<=0)j=k-1; 
if(strcmp(id,word[k])>=0)i=k+1; 
} 
while(i<=j); 
if(i-1>j){sym=wsym[k]; }else {sym=ident; 
strcpy(b,a);}
/* 搜索失敗則,是名字或數(shù)字 */ 
} 
else 
{ 
if(ch>='0'&&ch<='9') 
{ /* 檢測是否為數(shù)字:以0..9開頭 */ 
k=0; 
num=0; 
sym=number; 
do 
{ 
num=10*num+ch-'0'; 
k++; 
getchdo; 
} 
while(ch>='0'&&ch<='9'); /* 獲取數(shù)字的值 */ 
k--; 
if(k>nmax)error(30); 
} 
else 
{ 
if(ch==':') /* 檢測賦值符號 */ 
{ 
getchdo; 
if(ch=='=') 
{ 
sym=becomes; 
getchdo; 
} 
else 
{ 
sym=colon; /* 不能識別的符號 */ 
} 
} 
else  
{ 
if(ch=='<') /* 檢測小于或小于等于符號 */ 
{ 
getchdo; 
if(ch=='=') 
{ 
sym=leq; 
getchdo; 
} 
else 
{ 
sym=lss; 
} 
} 
else
{ 
if(ch=='>') /* 檢測大于或大于等于符號 */ 
{ 
getchdo; 
if(ch=='=') 
{ 
sym=geq; 
getchdo; 
} 
else 
{ 
sym=gtr; 
} 
} 
else 
{ 
sym=ssym[ch]; /* 當(dāng)符號不滿足上述條件時(shí),全部按照單字符符號處理 */ 
getchdo; 
} 
} 
} 
} 
} 

return 0; 
} 




/* 編譯程序主體 */ 
int block(int lev,  /* 當(dāng)前分程序所在層 */ 
  int tx, /* 名字表當(dāng)前尾指針 */ 
  bool* fsys /* 當(dāng)前模塊后跟符號集合 */ 
  ) 
{ 
bool nxtlev[symnum];




 


while(sym==procsym) /* 收到過程聲明符號,開始處理過程聲明 */ 
{ 

strcpy(cd[dx].w,a);
getsymdo; 
if(sym==ident) 
{ 


strcpy(cd[dx].x,b);
	

getsymdo; 
} 
else error(4); /* procedure后應(yīng)為標(biāo)識符 */ 
if(sym==semicolon) 
{ 
	gen(cd[dx].w,cd[dx].x,"-","-");
getsymdo; 
} 
else error(5); /* 漏掉了分號 */ 
} 
if(sym==constsym) 
{ 
getsymdo; 
do

{ 
constdeclarationdo(&tx,lev,&dx); 
while(sym==comma)  
{ 
getsymdo; 
constdeclarationdo(&tx,lev,&dx); 
} 
if(sym==semicolon) 
{ 
getsymdo; 
} 
else error(5); 
} 
while(sym==ident); 
}
if(sym==varsym) /* 收到變量聲明符號,開始處理變量聲明 */ 
 
 { 
	
getsymdo; 
do 
{    
vardeclarationdo(&tx,lev,&dx); 
while(sym==comma)  
{ 
	i++;
getsymdo; 
vardeclarationdo(&tx,lev,&dx); 
} 
if(sym==colon) 
{ 
getsymdo; 
} 
else error(5); 
if(sym==ident)
getsymdo;
else error(5);
if(sym==semicolon)
getsymdo;
else error(5);
} 
while(sym==ident); 
} 

statement(nxtlev,0,lev); 
gen("sys","-","-","-");




/* 語句后跟符號為分號或end */ 



return 0; 
} 



/* 初始化 */ 
void init() 
{ 
int i; 

/* 設(shè)置單字符符號 */ 
for(i=0;i<=255;i++)ssym[i]=nul; 
ssym['+']=plus; 
ssym['-']=minus; 
ssym['*']=times; 
ssym['/']=slash; 
ssym['(']=lparen; 
ssym[')']=rparen; 
ssym['=']=eql; 
ssym[',']=comma; 
ssym['.']=period; 
ssym['#']=neq; 
ssym[';']=semicolon; 
ssym[':']=colon;
/* 設(shè)置保留字名字 */ 
strcpy(&(word[0][0]),"begin"); 
strcpy(&(word[1][0]),"repeat"); 
strcpy(&(word[2][0]),"const"); 
strcpy(&(word[3][0]),"do"); 
strcpy(&(word[4][0]),"end"); 
strcpy(&(word[5][0]),"if"); 
strcpy(&(word[6][0]),"odd"); 
strcpy(&(word[7][0]),"program"); 
strcpy(&(word[8][0]),"read"); 
strcpy(&(word[9][0]),"then"); 
strcpy(&(word[10][0]),"var"); 
strcpy(&(word[11][0]),"while"); 
strcpy(&(word[12][0]),"and"); 
strcpy(&(word[13][0]),"until");
strcpy(&(word[14][0]),"else");
/* 設(shè)置保留字符號 */ 
wsym[0]=beginsym; 
wsym[1]=repeatsym; 
wsym[2]=constsym; 
wsym[3]=dosym; 
wsym[4]=endsym; 
wsym[5]=ifsym; 
wsym[6]=oddsym; 
wsym[7]=procsym; 
wsym[8]=readsym; 
wsym[9]=thensym; 
wsym[10]=varsym; 
wsym[11]=whilesym;   
wsym[12]=andsym; 
wsym[13]=untilsym; 
wsym[14]=elsesym; 

/* 設(shè)置指令名稱 */ 
strcpy(&(mnemonic[lit][0]),"lit"); 
strcpy(&(mnemonic[opr][0]),"opr"); 
strcpy(&(mnemonic[lod][0]),"lod"); 
strcpy(&(mnemonic[sto][0]),"sto"); 
strcpy(&(mnemonic[cal][0]),"cal"); 
strcpy(&(mnemonic[inte][0]),"int"); 
strcpy(&(mnemonic[jmp][0]),"jmp"); 
strcpy(&(mnemonic[jpc][0]),"jpc"); 
/* 設(shè)置符號集 */ 
for(i=0;i<symnum;i++) 
{ 
declbegsys[i]=false; 
statbegsys[i]=false; 
facbegsys[i]=false; 
} 

/* 設(shè)置聲明開始符號集 */ 
declbegsys[constsym]=true; 
declbegsys[varsym]=true; 
declbegsys[procsym]=true; 

/* 設(shè)置語句開始符號集 */ 
statbegsys[beginsym]=true; 
statbegsys[repeatsym]=true; 
statbegsys[ifsym]=true; 
statbegsys[whilesym]=true; 

/* 設(shè)置因子開始符號集 */ 
facbegsys[ident]=true; 
facbegsys[number]=true; 
facbegsys[lparen]=true; 

} 



/* 供getsym取一個(gè)字符,每次讀一行,存入line緩沖區(qū),line被getsym取空時(shí) 再讀一行*/ 
int getch() 
{ 
if(cc==ll) 
{ 
if(feof(fin)) 
{ 
printf("program incomplete"); 
return -1; 
} 
ll=0; 
cc=0; 
//printf("%d ",cx); 
//fprintf(fa1,"%d ",cx); 
ch=' '; 
while(ch!=10) 
{ 
fscanf(fin,"%c",&ch); 
//printf("%c",ch); 
//fprintf(fa1,"%c",ch); 
line[ll]=ch; 
ll++; 
} 

//printf("\n"); 
//fprintf(fa1,"\n"); 
} 
ch=line[cc]; 
cc++; 
return 0; 
} 
int gen(char a[],char b[],char c[],char d[])
{
	if(dx>20){cout<<"too long";return -1;}
	
	strcpy(cd[dx].w,a);
    strcpy(cd[dx].x,b);
    strcpy(cd[dx].y,c);
    strcpy(cd[dx].z,d);
	dx++;
	return 0;



}




/* 常量聲明處理 */ 
int constdeclaration(int* ptx, 
 int lev, 
 int* pdx) 
{ 
if(sym==ident) 
{ 
getsymdo; 
if(sym==eql||sym==becomes) 
{ 
if(sym==becomes)error(1); /* 把=寫成了:= */ 
getsymdo;
 if(sym==number) 
{ 

getsymdo; 
} 
else error(2); /* 常量說明=后應(yīng)是數(shù)字 */ 
} 
else error(3); /* 常量說明標(biāo)識后應(yīng)是= */ 
} 
else error(4); /* const后應(yīng)是標(biāo)識 */ 
return 0; 
} 

/* 變量聲明處理 */ 
int vardeclaration(int* ptx,int lev,int* pdx) 
{ 

if(sym==ident) 
{ 


getsymdo; 
} 
else error(4); /* var后應(yīng)是標(biāo)識 */ 
return 0; 
} 



/* 語句處理 */ 
int statement(bool* fsys,int* ptx,int lev) /* 參數(shù)意義見block和enter函數(shù) */ 
{ 
int i,cx1,cx2; 
bool nxtlev[symnum]; /* 意義見block函數(shù) */ 

if(sym==beginsym) /* 準(zhǔn)備按照賦值語句處理 */ 
{ 
	getsymdo;
	while(sym==ident)
	{	strcpy(cd[dx].z,b);

getsymdo; 
if(sym==becomes)  
{ 
	strcpy(cd[dx].w,":=");
getsymdo; 
} 
else error(13); /* 檢測賦值符號 */ 

expression(nxtlev,ptx,lev); /* 處理賦值符號右側(cè)表達(dá)式 */ 
gen(cd[dx].w,b,"-",cd[dx].z);
getsymdo;
	}
statement(nxtlev,0,lev); 

} 

else 
{ if(sym==ident) /* 準(zhǔn)備按照賦值語句處理 */ 
{ 
	while(sym==ident)
	{	strcpy(cd[dx].z,b);

getsymdo; 
if(sym==becomes)  
{ 
	strcpy(cd[dx].w,":=");
getsymdo; 
} 
else error(13); /* 檢測賦值符號 */ 

expression(nxtlev,ptx,lev); /* 處理賦值符號右側(cè)表達(dá)式 */ 
gen(cd[dx].w,b,"-",cd[dx].z);

	}


} 
 
else 
{ 
if(sym==andsym) /* 準(zhǔn)備按照write語句處理,與read類似 */ 
{ 
getsymdo; 
if(sym==lparen) 
{ 
do 
{ 
getsymdo; 
memcpy(nxtlev,fsys,sizeof(bool)*symnum); 
nxtlev[rparen]=true; 
nxtlev[comma]=true; /* write的后跟符號為) or , */ 
expression(nxtlev,ptx,lev); /* 調(diào)用表達(dá)式處理,此處與read不同,read為給變量賦值 */ 

} 
while(sym==comma);  
if(sym!=rparen)error(33); /* write()中應(yīng)為完整表達(dá)式 */ 
else 
{ 
getsymdo; 
} 
} 

} 
else 
{ 
if(sym==repeatsym) /* 準(zhǔn)備按照call語句處理 */ 
{ 
getsymdo;
 expression(nxtlev,ptx,lev); 
 if(sym==untilsym){getsymdo;conditiondo(nxtlev,ptx,lev);}
 else error(3);
statement(fsys,0,lev); 

} 
else 
{ 
if(sym==ifsym) /* 準(zhǔn)備按照if語句處理 */ 
{ 
getsymdo; 

conditiondo(nxtlev,ptx,lev); /* 調(diào)用條件處理(邏輯運(yùn)算)函數(shù) */ 
if(sym==thensym)  
{ 
getsymdo; 
} 
else error(16); /* 缺少then */ 


statement(fsys,0,lev); /* 處理then后的語句 */
cout<<b;
if(sym==elsesym){cout<<"sdjfafsj";getsymdo;
statement(fsys,0,lev);} 
} 
else 

{ 
if(sym==beginsym) 
{ 
	
getsymdo; 



statement(nxtlev,0,lev); 
while(sym==semicolon)  
{ 
if(sym==semicolon) 
{ 
getsymdo; 
} 
else error(10); 
statement(nxtlev,ptx,lev); 
} 
if(sym==endsym)  
{ 
getsymdo; 
} 
else error(17);
} 
else 
{ 
if(sym==whilesym) /* 準(zhǔn)備按照while語句處理 */ 
{ 

	
cx1=cx; /* 保存判斷條件操作的位置 */ 
getsymdo; 

conditiondo(nxtlev,ptx,lev); /* 調(diào)用條件處理 */ 
cx2=cx; /* 保存循環(huán)體的結(jié)束的下一個(gè)位置 */ 
if(sym==andsym){getsymdo; getsymdo; getsymdo; }
if(sym==dosym) 
{ 
	
getsymdo; 
re=dx;

gen("j","-","-",cd[dx].z);
}
else error(18); /* 缺少do */ 
statement(fsys,0,lev); /* 循環(huán)體 */ 
sprintf(cd[re].z,"%d",dx);

  
} 

} 
} 
} 
} 
} 
} 

return 0; 
} 

/* 表達(dá)式處理 */ 
char expression(bool* fsys,int* ptx,int lev) /* 參數(shù)意義見block和enter函數(shù) */ 
{ 
enum symbol addop; /* 用于保存正負(fù)號 */ 
bool nxtlev[symnum]; 

if(sym==plus||sym==minus) /* 開頭的正負(fù)號,此時(shí)當(dāng)前表達(dá)式被看作一個(gè)正的或負(fù)的項(xiàng) */ 
{ 
addop=sym; /* 保存開頭的正負(fù)號 */ 
getsymdo; 

term(nxtlev,ptx,lev); /* 處理項(xiàng) */ 
}

else /* 此時(shí)表達(dá)式被看作項(xiàng)的加減 */ 
{ 
term(nxtlev,ptx,lev); /* 處理項(xiàng) */
 strcpy(e,cd[dx-1].z);

/* 處理項(xiàng) */ 
} 
while(sym==plus||sym==minus) 
{ 
addop=sym; 
getsymdo; 
term(nxtlev,ptx,lev); /* 處理項(xiàng) */
strcpy(cd[dx].y,cd[dx-1].z); /* 處理項(xiàng) */ 

 
if(addop==plus) 
{ 
	
	gen("+",e,cd[dx].y,"T");

} 
else 
{
gen("-",e,cd[dx].y,"T");
}
} 
return sym; 
} 

/* 條件處理 */ 
int condition(bool* fsys,int* ptx,int lev) /* 參數(shù)意義見block和enter函數(shù) */ 
{ 
enum symbol relop; 
bool nxtlev[symnum]; 
if(sym==oddsym) /* 準(zhǔn)備按照odd運(yùn)算處理 */ 
{ 
getsymdo; 
expression(fsys,ptx,lev); 

} 
else 
{ 
/* 邏輯表達(dá)式處理 */ 

strcpy(e,b);
expression(nxtlev,ptx,lev);  
 
if(sym!=eql&&sym!=neq&&sym!=lss&&sym!=leq&&sym!=gtr&&sym!=geq)error(20); 
else 
{ 
relop=sym; 

getsymdo;

expression(fsys,ptx,lev);  strcpy(cd[dx].y,b);
gen("<",e,cd[dx].y,cd[dx].z);

} 
} 
return 0; 
} 

/* 項(xiàng)處理 */ 
char term(bool* fsys,int* ptx,int lev) /* 參數(shù)意義見block和enter函數(shù) */ 
{ 
enum symbol mulop; /* 用于保存乘除法符號 */ 
bool nxtlev[symnum]; 



factor(nxtlev,ptx,lev); /* 處理因子 */ 
strcpy(cd[dx].x,b);
while(sym==times||sym==slash) 
{ 
mulop=sym; 
getsymdo; strcpy(cd[dx].y,b);
factor(nxtlev,ptx,lev); 
if(mulop==times) 
{ 

	gen("*",cd[dx].x,cd[dx].y,"T");
	

} 
else 
{ 

gen("/",cd[dx].x,cd[dx].y,"T");

} 
} 
return sym; 
} 

/* 因子處理 */ 
char factor(bool* fsys,int* ptx,int lev) /* 參數(shù)意義見block和enter函數(shù) */ 
{ 
int i; 
bool nxtlev[symnum]; 

while(1) /* 循環(huán)直到不是因子開始符號 */ 
{ 
if(sym==ident) /* 因子為常量或變量 */ 
{ 
	

if(i==0)error(11); /* 名字未聲明 */ 
else 
{ 

} 
getsymdo; 
return ident;
} 
else 
{ 
if(sym==number) /* 因子為數(shù) */ 
{ 

 sprintf(b,"%d",num);  



if(num>amax) 
{ 
error(31); 
num=0; 
} 


getsymdo; 
return num;
} 
else 
{ 
if(sym==lparen) /* 因子為表達(dá)式 */ 
{ 
getsymdo; 

expression(nxtlev,ptx,lev); 
if(sym==rparen) 
{ 
getsymdo; 
} 
else error(22); /* 缺少右括號 */ 
} 

} 
} 
} 
return  expression(nxtlev,ptx,lev); 
} 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品一区二区| 夜夜嗨av一区二区三区中文字幕| 99久久久久免费精品国产| 五月综合激情网| 中文字幕一区视频| 久久久91精品国产一区二区精品| 在线欧美日韩精品| youjizz久久| 精品一区二区三区在线播放 | 成人av网在线| 久草热8精品视频在线观看| 亚洲国产一二三| 亚洲欧美一区二区三区国产精品 | 亚洲另类在线一区| 国产嫩草影院久久久久| 日韩精品中文字幕在线一区| 欧美日韩一区二区三区在线| 成人午夜精品一区二区三区| 国产精品99久久久| 久草中文综合在线| 麻豆极品一区二区三区| 日本欧美韩国一区三区| 午夜精品一区二区三区免费视频 | 日韩激情视频在线观看| 丁香六月久久综合狠狠色| 美日韩一区二区三区| 五月天视频一区| 亚洲第一搞黄网站| 亚洲国产日韩av| 亚洲自拍偷拍图区| 亚洲电影一级黄| 亚洲亚洲精品在线观看| 亚洲在线观看免费视频| 一级做a爱片久久| 亚洲制服欧美中文字幕中文字幕| 亚洲欧洲精品一区二区三区| 欧美国产精品一区| 国产精品欧美极品| 亚洲天堂精品在线观看| 亚洲欧美国产77777| 亚洲一区在线看| 亚洲成人免费视频| 日本视频在线一区| 久草中文综合在线| 国产白丝网站精品污在线入口| 国产一区二区美女诱惑| 大美女一区二区三区| 成人激情小说乱人伦| 99久久精品国产导航| 91麻豆国产自产在线观看| 色视频一区二区| 欧美在线观看视频在线| 91麻豆精品国产综合久久久久久 | 日韩欧美国产不卡| 久久久综合精品| 国产精品日韩成人| 一区二区视频在线看| 日韩精品一卡二卡三卡四卡无卡| 日韩**一区毛片| 韩国在线一区二区| 99久久精品久久久久久清纯| 欧美在线观看视频一区二区三区| 91麻豆精品国产91久久久久| 日韩欧美一区在线| 国产精品蜜臀在线观看| 亚洲一区精品在线| 国内精品嫩模私拍在线| 色婷婷亚洲婷婷| 91精品国产欧美一区二区成人| 精品国产一二三区| 《视频一区视频二区| 日韩国产高清在线| 丁香天五香天堂综合| 欧美日韩精品一区二区三区四区 | 国产精品国产三级国产普通话三级 | 成人午夜在线视频| 欧美日韩一区久久| 欧美激情一区二区三区四区| 亚洲精品伦理在线| 久久精品噜噜噜成人av农村| 成人av中文字幕| 正在播放亚洲一区| 国产精品私房写真福利视频| 亚洲一区二区综合| 国产精品18久久久久久久网站| 欧美网站大全在线观看| 久久蜜臀中文字幕| 香蕉成人啪国产精品视频综合网 | 97国产一区二区| 日韩一卡二卡三卡四卡| 1024成人网色www| 7777精品久久久大香线蕉| 中文字幕电影一区| 免费高清成人在线| 在线免费观看视频一区| 国产女人18毛片水真多成人如厕| 日韩国产精品91| 色婷婷综合久久久| 国产精品丝袜一区| 精品伊人久久久久7777人| 欧美私模裸体表演在线观看| 国产清纯白嫩初高生在线观看91| 日本欧美一区二区| 在线一区二区三区做爰视频网站| 日本一区二区三区免费乱视频| 免费成人在线网站| 欧美日韩免费不卡视频一区二区三区| 国产精品麻豆久久久| 久久精工是国产品牌吗| 欧美三级资源在线| 一区二区三区日韩欧美| 成人激情午夜影院| 久久精品视频免费| 精品在线视频一区| 91精品国产综合久久久蜜臀粉嫩 | 欧美aaaaaa午夜精品| 欧美日韩一区中文字幕| 亚洲精品写真福利| 99这里都是精品| 国产精品国产三级国产aⅴ中文| 激情图片小说一区| 精品日韩一区二区三区免费视频| 青青国产91久久久久久| 亚洲在线成人精品| 日本韩国欧美在线| 亚洲免费大片在线观看| 91视频.com| 一色桃子久久精品亚洲| 成人激情图片网| 国产精品少妇自拍| av中文字幕亚洲| 综合在线观看色| 色婷婷综合久久久久中文 | 国产亚洲欧美一级| 国产寡妇亲子伦一区二区| 久久这里只有精品视频网| 精品一区二区三区不卡| 精品福利一区二区三区| 国产一区二区三区四区五区入口| www一区二区| 国产成人精品一区二区三区网站观看| 久久这里只有精品首页| 国产精品一区二区91| 日本一区二区视频在线观看| 成人国产精品免费观看视频| 国产精品视频免费| 色综合久久综合网欧美综合网 | 午夜影院在线观看欧美| 欧美日韩激情在线| 亚洲成人av中文| 日韩欧美综合一区| 国产成人午夜电影网| 国产精品国产三级国产普通话三级| 99精品视频一区| 亚洲精品国产一区二区精华液 | 中文字幕二三区不卡| 91丝袜美女网| 日韩va亚洲va欧美va久久| 26uuu国产电影一区二区| www.在线成人| 亚洲高清免费在线| 精品噜噜噜噜久久久久久久久试看 | 亚洲电影在线播放| 日韩视频免费观看高清在线视频| 狠狠久久亚洲欧美| 亚洲精品国产一区二区精华液 | 视频在线在亚洲| 久久久精品综合| 91香蕉视频污在线| 免费成人结看片| 国产精品伦一区| 欧美日韩国产bt| 国产精品一区二区三区网站| 亚洲精品成a人| 精品国产免费一区二区三区四区| aaa欧美大片| 日本欧美一区二区三区| 亚洲欧洲日韩在线| 日韩欧美国产精品一区| aa级大片欧美| 国产呦精品一区二区三区网站| 中文字幕视频一区| 欧美va日韩va| 91精品91久久久中77777| 国产精品一区免费视频| 亚洲电影你懂得| 国产精品视频免费| 欧美变态口味重另类| 色久优优欧美色久优优| 国产激情91久久精品导航| 五月天视频一区| 亚洲精品亚洲人成人网 | 亚洲欧美日韩国产另类专区| 日韩精品一区二区三区中文不卡 | 国产欧美日韩在线观看| 欧美久久久影院| 色拍拍在线精品视频8848| 国产伦理精品不卡| 蜜桃一区二区三区在线观看| 一区二区三区在线影院|