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

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

?? shell.yacc

?? VxWorks BSP框架源代碼包含頭文件和驅動
?? YACC
?? 第 1 頁 / 共 3 頁
字號:
%{/* shell.yacc - grammar for VxWorks shell *//* Copyright 1984-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------07m,16oct01,jn   use symFindSymbol for symbol lookups07l,27nov01,pch  Provide floating-point exclusion based on _WRS_NO_TGT_SHELL_FP		 definition instead of testing a specific CPU type.07k,23oct01,fmk  Do not call symFindByValue and print symbol name if symbol                 value = -1 SPR 2225407j,04sep98,cdp  apply 07i for all ARM CPUs with ARM_THUMB==TRUE.07i,30jul97,cdp  for ARM7TDMI_T, force calls to be in Thumb state.07h,31may96,ms   added in patch for SPR 4439.07g,19mar95,dvs  removed tron references.07f,02mar95,yao  removed floating point temporarily for PPC403.07e,19mar95,dvs  removed tron references.07d,13feb93,kdl  changed cplusLib.h to private/cplusLibP.h (SPR #1917).07c,03sep92,wmd  modified addArg() to pass floats correcty for the i960.07b,03sep92,rrr  reduced max function arguments from 16 to 12 (for i960).07a,31aug92,kdl  fixed passing of more than 10 parameters during funcCall();		 changed MAX_ARGS to MAX_SHELL_ARGS.06z,19aug92,jmm  fixed problem with not recognizing <= (SPR 1517)06y,01aug92,srh  added C++ demangling idiom to printSym.                 added include of cplusLib.h.06x,20jul92,jmm  added group parameter to symAdd call06w,23jun92,kdl  increased max function arguments from 10 to 16.06v,22jun92,jmm  backed out 6u change, now identical to gae's 21dec revision06u,22jun92,jmm  added group parameter to symAdd06t,21dec91,gae  more ANSI cleanups.06s,19nov91,rrr  shut up some warnings.06r,05oct91,rrr  changed strLib.h to string.h06q,02jun91,del  added I960 parameter alignment fixes.06p,10aug90,kdl  added forward declarations for functions returning VOID.06o,10jul90,dnw  spr 738: removed checking of access (checkAccess, chkLvAccess)		   Access checking did vxMemProbe with 4 byte read, which		   caused problems with memory or devices that couldn't do		   4 byte reads but could do other types of access.		   Access checking was actually a throw-back to a time when		   the shell couldn't recover from bus errors, but it can now.		   So I just deleted the access checking.		 lint clean-up, esp to allow VOID to be void one day.06n,10dec89,jcf  symbol table type now a SYM_TYPE.06m,09aug89,gae  fixed copyright notice.06l,30jul89,gae  changed obsolete sysMemProbe to vxMemProbe. 06k,07jul88,jcf  changed malloc to match new declaration.06j,30may88,dnw  changed to v4 names.06i,01apr88,gae  made it work with I/O system changes -- io{G,S}etGlobalStd().06h,20feb88,dnw  lint06g,14dec87,dnw  removed checking for odd byte address access.		 changed printing format of doubles from "%f" to "%g". 06f,18nov87,gae  made assignment to be of type specified by rhs.06e,07nov87,gae  fixed undefined symbol bug.		 fixed history bug by redirecting LED I/O.06d,03nov87,ecs  documentation.06c,28oct87,gae  got rid of string type.06b,06oct87,gae  split off "execution" portion to shellExec.c.		 changed to use conventional C type casting.		 provided more info for invalid yacc operations.		 allowed expressions to be function addresses.06a,01jun87,gae  added interpretation of bytes, words, floats, doubles;		   expressions can now be "typed" a la assembler, .[bwfdls].		 fixed redirection bug with ">>" and "<<".05i,16jul87,ecs  fixed newSym so that new symbols will be global.05h,01apr87,gae  made assign() not print "new value" message (duplicated		   normal "value" message for expressions.05g,25apr87,gae  fixed bug in assign() that allowed memory corruption.		 checked h() parameter for greater than or equal to zero.		 improved redirection detection.		 now parse assignments correctly as expressions.05f,01apr87,ecs  added include of strLib.h.05e,20jan87,jlf  documentation.05d,14jan87,gae  got rid of unused curLineNum.  h() now has parameter, if		   non-zero then resets history to that size.05c,20dec86,dnw  changed to not get include files from default directories.05b,18dec86,gae  made history initialization only happen on first start of		   shell.  Added neStmt to fix empty stmt assignment bug.05a,17dec86,gae	 use new shCmd() in execShell() to do Korn shell-like input.04q,08dec86,dnw  changed shell.slex.c to shell_slex.c for VAX/VMS compatiblity.	    jlf  fixed a couple bugs causing problems mainly on Heurikon port.04p,24nov86,llk  deleted SYSTEM conditional compiles.04o,08oct86,gae  added C assignment operators; allowed multiple assignment.		 STRINGs are no longer temporary.  Added setShellPrompt().04n,27jul86,llk  added standard error fd, setOrigErrFd.04m,17jun86,rdc  changed memAllocates to mallocs.04l,08apr86,dnw  added call to vxSetTaskBreakable to make shell unbreakable.		 changed sstLib calls to symLib.04k,02apr86,rdc  added routines setOrigInFd and setOrigOutFd.04j,18jan86,dnw  removed resetting (flushing) for standard in/out upon restarts;		   this is now done more appropriately by the shell restart		   routine in dbgLib....deleted pre 86 history - see RCS*//*DESCRIPTIONThis is the parser for the VxWorks shell, written in yacc.It provides the basic programmer's interface to VxWorks.It is a C expression interpreter, containing no built-in commands.  SEE ALSO: "Shell"*/#include "vxWorks.h"#include "sysSymTbl.h"#include "errno.h"#include "errnoLib.h"#include "ioLib.h"#include "taskLib.h"#include "stdio.h"#include "private/cplusLibP.h"#define YYSTYPE VALUE		/* type of parse stack */#define	MAX_SHELL_LINE	128	/* max chars on line typed to shell */#define MAX_SHELL_ARGS	30	/* max number of args on stack */#define MAX_FUNC_ARGS	12	/* max number of args to any one function */				/*  NOTE: The array indices in funcCall()				 *        must agree with MAX_FUNC_ARGS!!				 */#define BIN_OP(op)	rvOp((getRv(&yypvt[-2], &tmpVal1)), op, \			      getRv(&yypvt[-0], &tmpVal2))#define	RV(value)	(getRv (&(value), &tmpVal2))#define NULLVAL		(VALUE *) NULL#define CHECK		if (semError) YYERROR#define SET_ERROR	semError = TRUEtypedef enum		/* TYPE */    {    T_UNKNOWN,    T_BYTE,    T_WORD,#ifndef	_WRS_NO_TGT_SHELL_FP    T_INT,    T_FLOAT,    T_DOUBLE#else	/* _WRS_NO_TGT_SHELL_FP */    T_INT#endif	/* _WRS_NO_TGT_SHELL_FP */    } TYPE;typedef enum		/* SIDE */    {    LHS,    RHS,    FHS			/* function: rhs -> lhs */    } SIDE;typedef struct		/* VALUE */    {    SIDE side;    TYPE type;    union	{	int *lv;	/* pointer to any of the below */	char byte;	short word;	int rv;	char *string;#ifndef	_WRS_NO_TGT_SHELL_FP	float fp;	double dp;#endif	/* _WRS_NO_TGT_SHELL_FP */	} value;    } VALUE;IMPORT int redirInFd;IMPORT int redirOutFd;LOCAL BOOL semError;	/* TRUE = semantic error found */LOCAL VALUE tmpVal1;	/* used by BIN_OP above for expression evaluation */LOCAL VALUE tmpVal2;	/* used by BIN_OP above for expression evaluation */LOCAL int argStack [MAX_SHELL_ARGS];	/* arguments to functions */LOCAL int nArgs;	/* number of args currently on argStack */LOCAL BOOL usymFlag;	/* TRUE = U_SYMBOL has been seen */LOCAL VALUE usymVal;	/* value of U_SYMBOL which has been seen */LOCAL BOOL spawnFlag;	/* TRUE if spawn is first parameter in argStack[] */%}%start line%token NL 0%token T_SYMBOL D_SYMBOL U_SYMBOL NUMBER CHAR STRING FLOAT%token OR AND EQ NE GE LE INCR DECR ROT_LEFT ROT_RIGHT UMINUS PTR TYPECAST%token ENDFILE LEX_ERROR%left '=' MULA DIVA MODA ADDA SUBA SHLA SHRA ANDA ORA XORA%right '?' ':'%left OR%left AND%left '|'%left '^'%left '&'%left EQ NE%left GE LE '>' '<'%left ROT_LEFT ROT_RIGHT%left '+' '-'%left '*' '/' '%'%left INCR DECR%left UNARY	/* supplies precedence for unary operators */%left PTR '[' '('%left TYPECAST%%line	:	stmt	|	stmt ';' line	;stmt	:	/* empty */	|	expr			{ printValue (&$1); CHECK; }	;expr	:	D_SYMBOL	|	T_SYMBOL { $1.side = RHS; setRv (&$$, &$1); }	|	STRING	 { $$ = $1; $$.value.rv = newString((char*)$1.value.rv);			   CHECK; }	|	CHAR	|	NUMBER	|	FLOAT	|	'(' expr ')'	 	{ $$ = $2; }	|	expr '(' arglist ')'			{ $$ = funcCall (&$1, &$3); CHECK; }	|	typecast expr %prec TYPECAST			{ 			typeConvert (&$2, $1.type, $1.side); $$ = $2;			CHECK;			}	|	'*' expr  %prec UNARY	{ VALUE tmp;					  (void)getRv (&$2, &tmp);					  setLv (&$$, &tmp);					  CHECK;					}	|	'&' expr  %prec UNARY	{ $$.value.rv = (int)getLv (&$2);					  $$.type = T_INT; $$.side = RHS; }	|	'-' expr  %prec UNARY	{ rvOp (RV($2), UMINUS, NULLVAL); }	|	'!' expr  %prec UNARY	{ rvOp (RV($2), '!', NULLVAL); }	|	'~' expr  %prec UNARY	{ rvOp (RV($2), '~', NULLVAL); }	|	expr '?' expr ':' expr	{ setRv (&$$, RV($1)->value.rv ? &$3								       : &$5); }	|	expr '[' expr ']'	{ BIN_OP ('+');					  typeConvert (&$$, T_INT, RHS);					  setLv (&$$, &$$); }	|	expr PTR expr		{ BIN_OP ('+');					  typeConvert (&$$, T_INT, RHS);					  setLv (&$$, &$$); }	|	expr '+' expr		{ BIN_OP ('+'); }	|	expr '-' expr		{ BIN_OP ('-'); }	|	expr '*' expr		{ BIN_OP ('*'); }	|	expr '/' expr 		{ BIN_OP ('/'); }	|	expr '%' expr 		{ BIN_OP ('%'); }	|	expr ROT_RIGHT expr 	{ BIN_OP (ROT_RIGHT); }	|	expr ROT_LEFT expr 	{ BIN_OP (ROT_LEFT); }	|	expr '&' expr 		{ BIN_OP ('&'); }	|	expr '^' expr 		{ BIN_OP ('^'); }	|	expr '|' expr 		{ BIN_OP ('|'); }	|	expr AND expr 		{ BIN_OP (AND); }	|	expr OR expr 		{ BIN_OP (OR); }	|	expr EQ expr 		{ BIN_OP (EQ); }	|	expr NE expr 		{ BIN_OP (NE); }	|	expr GE expr 		{ BIN_OP (GE); }	|	expr LE expr 		{ BIN_OP (LE); }	|	expr '>' expr 		{ BIN_OP ('>'); }	|	expr '<' expr 		{ BIN_OP ('<'); }	|	INCR expr	%prec UNARY	{ rvOp (RV($2), INCR, NULLVAL);						  assign (&$2, &$$); CHECK; }	|	DECR expr	%prec UNARY	{ rvOp (RV($2), DECR, NULLVAL);						  assign (&$2, &$$); CHECK; }	|	expr INCR	%prec UNARY	{ VALUE tmp;						  tmp = $1;						  rvOp (RV($1), INCR, NULLVAL);						  assign (&$1, &$$); CHECK;						  $$ = tmp; }	|	expr DECR	%prec UNARY	{ VALUE tmp;						  tmp = $1;						  rvOp (RV($1), DECR, NULLVAL);						  assign (&$1, &$$); CHECK;						  $$ = tmp; }	|	expr ADDA expr	{ BIN_OP (ADDA); assign (&$1, &$$); CHECK;}	|	expr SUBA expr	{ BIN_OP (SUBA); assign (&$1, &$$); CHECK;}	|	expr ANDA expr	{ BIN_OP (ANDA); assign (&$1, &$$); CHECK;}	|	expr ORA  expr	{ BIN_OP (ORA);  assign (&$1, &$$); CHECK;}	|	expr MODA expr	{ BIN_OP (MODA); assign (&$1, &$$); CHECK;}	|	expr XORA expr	{ BIN_OP (XORA); assign (&$1, &$$); CHECK;}	|	expr MULA expr	{ BIN_OP (MULA); assign (&$1, &$$); CHECK;}	|	expr DIVA expr	{ BIN_OP (DIVA); assign (&$1, &$$); CHECK;}	|	expr SHLA expr	{ BIN_OP (SHLA); assign (&$1, &$$); CHECK;}	|	expr SHRA expr	{ BIN_OP (SHRA); assign (&$1, &$$); CHECK;}	|	expr '=' expr	{ assign (&$1, &$3); $$ = $1; }	|	U_SYMBOL			/* the following is to allow "undef sym" error msg,			 * instead of "syntax err" when U_SYM is not followed			 * by proper assignment (see yyerror() below) */			{ usymFlag = TRUE; usymVal = $1; }		'=' expr 			{			if ($1.type != T_UNKNOWN)			    {			    printf ("typecast of lhs not allowed.\n");			    YYERROR;			    }			else			    {			    $$ = newSym ((char *)$1.value.rv, $4.type); CHECK;			    assign (&$$, &$4); CHECK;			    }			usymFlag = FALSE;			}	;arglist	:	/* empty */			{ $$ = newArgList (); }	|	neArglist	;neArglist:	expr			/* non-empty arglist */			{ $$ = newArgList (); addArg (&$$, &$1); CHECK; }	|	neArglist ',' expr	/* ',' is required */			{ addArg (&$1, &$3); CHECK; }	;typecast:	'(' TYPECAST ')'		{ $2.side = RHS; $$ = $2; }	|	'(' TYPECAST '(' ')' ')'	{ $2.side = FHS; $$ = $2; }	;%%#include "a_out.h"#include "ctype.h"#include "stdlib.h"#include "string.h"#include "symLib.h"#include "shell_slex_c"/* forward declarations */LOCAL int newString ();LOCAL VALUE *getRv ();LOCAL int *getLv ();LOCAL VALUE evalExp ();#ifndef	_WRS_NO_TGT_SHELL_FPLOCAL void doubleToInts ();#endif	/* _WRS_NO_TGT_SHELL_FP */LOCAL void setRv ();LOCAL void typeConvert ();LOCAL BOOL checkLv ();LOCAL BOOL checkRv ();/********************************************************************************* yystart - initialize local variables** NOMANUAL*/void yystart (line)    char *line;    {    lexNewLine (line);    semError = FALSE;    usymFlag = FALSE;    nArgs = 0;    spawnFlag = FALSE;    }/********************************************************************************* yyerror - report error** This routine is called by yacc when an error is detected.*/LOCAL void yyerror (string)    char *string;    {    if (semError)	/* semantic errors have already been reported */	return;    /* print error depending on what look-ahead token is */    switch (yychar)	{	case U_SYMBOL:	/* U_SYM not at beginning of line */	    printf ("undefined symbol: %s\n", (char *) yylval.value.rv);	    break;	case LEX_ERROR:	     /* lex should have already reported the problem */	    break;	default:	    if (usymFlag)    /* leading U_SYM was followed by invalid assign */		printf ("undefined symbol: %s\n", (char *)usymVal.value.rv);	    else		printf ("%s\n", string);	    break;	}    }/********************************************************************************* rvOp - sets rhs of yyval to evaluated expression*/LOCAL void rvOp (pY1, op, pY2)    VALUE *pY1;    int op;    VALUE *pY2;    {    VALUE yy;    yy = evalExp (pY1, op, pY2);    setRv (&yyval, &yy);    }/********************************************************************************* assign - make assignment of new value to a cell*/LOCAL void assign (pLv, pRv)    FAST VALUE *pLv;	/* lhs to be assigned into */    FAST VALUE *pRv;	/* rhs value */    {    VALUE val;    /* verify that lv can be assigned to, then make the assignment */    if (checkLv (pLv) && checkRv (pRv))	{	(void)getRv (pRv, &val);	/* make value agree in type */	pLv->type = pRv->type;	typeConvert (&val, pLv->type, RHS);	switch (pLv->type)	    {	    case T_BYTE:		* (char *)getLv (pLv) = val.value.byte;		break;	    case T_WORD:		* (short *)getLv (pLv) = val.value.word;		break;	    case T_INT:		*getLv (pLv) = val.value.rv;		break;#ifndef	_WRS_NO_TGT_SHELL_FP	    case T_FLOAT:		* (float *)getLv (pLv) = val.value.fp;		break;	    case T_DOUBLE:		* (double *)getLv (pLv) = val.value.dp;		break;#endif	/* _WRS_NO_TGT_SHELL_FP */	    default:		printf ("bad assignment.\n");		SET_ERROR;	    }	}    else	{	printf ("bad assignment.\n");	SET_ERROR;	}    }/********************************************************************************* newString - allocate and copy a string*/LOCAL int newString (string)    char *string;    {    int length    = strlen (string) + 1;    char *address = (char *) malloc ((unsigned) length);    if (address == NULL)	{	printf ("not enough memory for new string.\n");	SET_ERROR;	}    else	bcopy (string, address, length);    return ((int)address);    }/********************************************************************************* newSym - allocate a new symbol and add to symbol table*/LOCAL VALUE newSym (name, type)    char *name;    TYPE type;    {    VALUE value;    void *address = (void *) malloc (sizeof (double));    if (address == NULL)	{	printf ("not enough memory for new variable.\n");	SET_ERROR;	}    else if (symAdd (sysSymTbl, name, (char *) address, (N_BSS | N_EXT),                     symGroupDefault) != OK)	{	free ((char *) address);	printf ("can't add '%s' to system symbol table - error = 0x%x.\n",		name, errnoGet());	SET_ERROR;	}    else	{	printf ("new symbol \"%s\" added to symbol table.\n", name);	value.side	= LHS;	value.type	= type;	value.value.lv	= (int *) address;	}    return (value);    }/********************************************************************************* printSym - print symbolic value*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区乱视频| 日韩一二在线观看| 亚洲午夜精品网| 国产免费观看久久| 欧美日本一区二区三区四区| caoporn国产一区二区| 精品一区二区三区免费毛片爱 | 亚洲国产精品久久久男人的天堂| 欧美一区二区三区精品| 91丨porny丨蝌蚪视频| 国产乱子伦视频一区二区三区| 五月激情综合色| 综合分类小说区另类春色亚洲小说欧美| 日韩你懂的在线观看| 在线观看日韩av先锋影音电影院| 亚洲午夜久久久久久久久电影网 | 国产伦精品一区二区三区免费 | 欧美日韩高清影院| 高清国产一区二区| 免费的国产精品| 亚洲人吸女人奶水| 国产精品美女久久久久久2018| 26uuu色噜噜精品一区| 精品国产免费人成电影在线观看四季| 9191久久久久久久久久久| 欧美女孩性生活视频| 欧美人xxxx| 91精品午夜视频| av激情综合网| 91丨porny丨在线| 91视视频在线观看入口直接观看www| jizzjizzjizz欧美| av中文一区二区三区| 成人午夜电影小说| 91麻豆国产福利在线观看| 欧洲一区二区av| 欧美美女视频在线观看| 欧美一级夜夜爽| 精品国产一区二区精华| 久久久av毛片精品| 久久久青草青青国产亚洲免观| 欧美精品一区二区久久久| 久久综合九色综合欧美就去吻| 2023国产一二三区日本精品2022| 国产丝袜美腿一区二区三区| 自拍偷拍国产精品| 天天影视涩香欲综合网| 韩国成人福利片在线播放| 丁香啪啪综合成人亚洲小说| 一本一本大道香蕉久在线精品| 欧美曰成人黄网| 日韩免费高清视频| 日韩一卡二卡三卡| 国产经典欧美精品| 不卡一区二区在线| 一本大道综合伊人精品热热| 91精品国模一区二区三区| 国产区在线观看成人精品| 一区二区三区在线观看国产| 精品制服美女丁香| 99精品一区二区| 91精品国产麻豆| 国产精品福利在线播放| 日韩**一区毛片| 91香蕉视频污| 精品欧美一区二区在线观看| 亚洲三级在线观看| 久久电影国产免费久久电影 | 欧美高清一级片在线观看| 亚洲大片一区二区三区| 国产成人高清在线| 粉嫩久久99精品久久久久久夜| 色欧美88888久久久久久影院| 欧美三级韩国三级日本一级| 国产日韩欧美综合一区| 三级亚洲高清视频| 在线一区二区三区| 国产女人18水真多18精品一级做 | 婷婷亚洲久悠悠色悠在线播放| 毛片不卡一区二区| 欧美私人免费视频| 国产精品色哟哟| 国产综合久久久久久久久久久久| 欧美日韩日日摸| 亚洲女女做受ⅹxx高潮| 国产精品亚洲专一区二区三区 | 欧美一激情一区二区三区| 一区二区三区鲁丝不卡| 国产福利一区在线观看| 日韩一级片网址| 国产亚洲欧洲997久久综合| 免费在线欧美视频| 欧美三级电影在线看| 一区二区三区在线不卡| 99久久综合色| 国产精品不卡一区| aaa亚洲精品| 国产精品动漫网站| 99精品黄色片免费大全| 国产精品色在线| 99精品视频在线播放观看| 精品国产一区久久| 国模一区二区三区白浆| 2020国产成人综合网| 丝袜亚洲精品中文字幕一区| 欧美在线观看视频在线| 亚洲资源在线观看| 在线区一区二视频| 午夜精品aaa| 日韩一区二区三区四区 | 香蕉久久一区二区不卡无毒影院| 色综合天天综合网国产成人综合天 | 成人av综合一区| 亚洲男同性视频| 成人黄色国产精品网站大全在线免费观看| 欧美一二三在线| 日本va欧美va瓶| 久久蜜臀精品av| 91丨porny丨户外露出| 香蕉影视欧美成人| 精品剧情在线观看| 成人精品一区二区三区四区 | 久久精品久久99精品久久| 久久综合99re88久久爱| yourporn久久国产精品| 亚洲综合在线视频| 日韩欧美高清一区| 处破女av一区二区| 一区二区三区鲁丝不卡| 精品噜噜噜噜久久久久久久久试看| 夫妻av一区二区| 亚洲国产精品一区二区久久| 欧美大片免费久久精品三p| caoporm超碰国产精品| 亚洲精品日韩一| 欧美一区二区在线视频| 美女在线视频一区| 国产日产欧美一区二区三区| 在线观看91精品国产入口| 久久国产精品一区二区| 一区二区在线观看免费视频播放| 欧美一区二区三区免费观看视频| 成人综合婷婷国产精品久久蜜臀| 午夜国产精品一区| 中文字幕中文字幕一区二区| 7777精品久久久大香线蕉| 成人黄色一级视频| 麻豆精品国产传媒mv男同| 亚洲美女一区二区三区| 国产午夜精品在线观看| 678五月天丁香亚洲综合网| 懂色av一区二区在线播放| 亚洲国产精品视频| 亚洲免费观看高清完整版在线| 精品国产三级a在线观看| 欧美日韩国产综合久久| 99视频超级精品| 国产高清精品网站| 极品美女销魂一区二区三区| 午夜成人在线视频| 一片黄亚洲嫩模| 国产精品久久99| 国产精品网站在线播放| 久久尤物电影视频在线观看| 欧美电影影音先锋| 欧美在线不卡一区| 在线精品视频小说1| 99久久婷婷国产综合精品| 日韩精品五月天| 舔着乳尖日韩一区| 香蕉影视欧美成人| 亚洲成av人片在线观看| 一区二区国产盗摄色噜噜| 国产精品久久久久久久午夜片| 国产香蕉久久精品综合网| 精品久久国产老人久久综合| 91精品国产综合久久香蕉的特点| 欧美午夜寂寞影院| 欧美日韩国产乱码电影| 91在线观看美女| 色婷婷综合久久久久中文一区二区| 成人av资源站| 不卡的av在线| 99久久99久久精品免费看蜜桃| 99免费精品视频| 91精品福利视频| 欧美美女黄视频| 欧美成人性福生活免费看| 91国在线观看| 欧洲一区二区三区在线| 欧美偷拍一区二区| 在线观看亚洲精品视频| 在线播放中文一区| 久久久久久一级片| 久久这里只有精品视频网| 亚洲欧美成人一区二区三区| 美女尤物国产一区| www.久久精品| 精品国产91亚洲一区二区三区婷婷 | 欧美日韩精品一区二区在线播放 |