亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美日韩三级一区| av电影在线观看一区| 日韩一区二区视频在线观看| 视频一区免费在线观看| 91精品国产一区二区三区| 蜜桃视频在线观看一区| 久久日韩精品一区二区五区| 国产精品一二三四五| 国产精品免费网站在线观看| 色噜噜狠狠成人网p站| 婷婷亚洲久悠悠色悠在线播放| 欧美丰满高潮xxxx喷水动漫| 捆绑调教美女网站视频一区| 久久精品亚洲精品国产欧美| heyzo一本久久综合| 亚洲成人精品在线观看| 精品国产制服丝袜高跟| 成人精品小蝌蚪| 亚洲va中文字幕| 久久精品一区二区三区不卡| 99re视频这里只有精品| 日本亚洲一区二区| 国产午夜精品一区二区| 91福利国产精品| 韩国欧美国产1区| 亚洲男人天堂av网| 日韩欧美国产1| 成人h动漫精品| 日本v片在线高清不卡在线观看| 久久日一线二线三线suv| 色噜噜久久综合| 九色综合狠狠综合久久| 一区二区三区四区中文字幕| 一区二区三区在线观看动漫| 欧美一区二区播放| 99re8在线精品视频免费播放| 蜜臀va亚洲va欧美va天堂| 国产欧美日韩不卡| 91精品国产综合久久精品app| 国产成人福利片| 欧美aⅴ一区二区三区视频| 亚洲欧洲av在线| 久久综合久久鬼色| 欧美美女bb生活片| 色婷婷综合久久久久中文| 久草在线在线精品观看| 亚洲韩国一区二区三区| 中文字幕精品一区| 精品电影一区二区| 欧美日本一道本| 色哟哟一区二区在线观看| 国产一区不卡精品| 久久99精品久久久久久国产越南| 一区二区三区蜜桃| 17c精品麻豆一区二区免费| 精品va天堂亚洲国产| 欧美精品18+| 欧美中文字幕一区| 色悠悠久久综合| 成人av在线一区二区三区| 国内成人免费视频| 美女视频网站黄色亚洲| 日韩精品一级二级| 午夜精品视频一区| 午夜精品久久久久久久久久久 | 午夜久久久久久久久久一区二区| 国产精品久久国产精麻豆99网站 | 国产日产欧美精品一区二区三区| 日韩欧美一区二区不卡| 欧美日韩另类一区| 欧美日韩国产综合一区二区 | 国产在线日韩欧美| 美女被吸乳得到大胸91| 日韩精品乱码免费| 亚洲国产日韩综合久久精品| 亚洲一区二区三区四区的| 一区二区三区四区精品在线视频| 亚洲免费在线看| 一区二区三区日韩在线观看| 亚洲精品视频一区| 亚洲蜜臀av乱码久久精品| 亚洲欧洲综合另类| 一区二区免费看| 亚洲成人综合在线| 婷婷六月综合网| 免费高清在线一区| 国产精品一区二区久激情瑜伽| 欧美精品久久久久久久久老牛影院| 91在线观看下载| 99国产麻豆精品| 欧美视频在线观看一区二区| 在线成人免费观看| 精品成a人在线观看| 国产女主播在线一区二区| 最新国产成人在线观看| 亚洲一区在线电影| 久久精品国产亚洲高清剧情介绍| 黄色资源网久久资源365| 国产999精品久久| 色婷婷精品大视频在线蜜桃视频| 欧美在线免费播放| 精品少妇一区二区三区日产乱码| 国产亚洲成年网址在线观看| 国产精品久线观看视频| 亚洲自拍另类综合| 久久99久久精品欧美| 成人网在线播放| 欧美日韩在线播放三区| 亚洲精品一区二区三区四区高清| 国产精品麻豆一区二区| 午夜一区二区三区在线观看| 久久69国产一区二区蜜臀| 97久久久精品综合88久久| 777xxx欧美| 中文乱码免费一区二区| 天天综合色天天综合| 国产传媒日韩欧美成人| 在线观看日韩一区| 精品电影一区二区| 一区二区成人在线视频| 精品一区二区三区在线视频| 91视频免费播放| 久久综合一区二区| 亚洲一区二区在线观看视频| 国产一区二区三区免费播放| 91久久精品网| 国产日韩欧美精品一区| 日韩专区欧美专区| 91视频你懂的| 国产婷婷色一区二区三区四区| 亚洲成人在线免费| 成人avav在线| 久久久久一区二区三区四区| 性欧美疯狂xxxxbbbb| 99精品视频在线观看免费| 精品理论电影在线| 亚洲成人手机在线| 色综合天天综合在线视频| 久久这里只有精品视频网| 调教+趴+乳夹+国产+精品| 色欲综合视频天天天| 日本一区二区免费在线| 久久99精品国产麻豆婷婷洗澡| 欧美色图天堂网| 国产成a人亚洲| 欧美一区二区三区日韩视频| 亚洲激情六月丁香| 成人免费观看av| 国产亚洲欧美日韩俺去了| 日韩av在线免费观看不卡| 欧美视频完全免费看| 亚洲人一二三区| 9i在线看片成人免费| 欧美国产欧美亚州国产日韩mv天天看完整 | 亚洲国产精品一区二区久久 | 成人黄色在线网站| 久久亚洲精精品中文字幕早川悠里| 亚洲v日本v欧美v久久精品| 色悠久久久久综合欧美99| 亚洲欧美日韩综合aⅴ视频| 国产a久久麻豆| 久久精品欧美一区二区三区麻豆| 另类成人小视频在线| 日韩美女视频一区二区在线观看| 日本麻豆一区二区三区视频| 51精品秘密在线观看| 午夜伊人狠狠久久| 欧美一区二区三区四区视频 | 欧美va亚洲va香蕉在线| 日韩国产欧美三级| 日韩一区二区三区三四区视频在线观看 | 色哦色哦哦色天天综合| 亚洲少妇30p| 色噜噜久久综合| 亚洲一级在线观看| 国产精品美女久久久久久久 | 成人免费毛片a| 欧美激情资源网| 成人av网站免费观看| 最好看的中文字幕久久| 欧美亚洲国产一区二区三区va| 一区二区三区产品免费精品久久75| 一本大道av伊人久久综合| 亚洲成人福利片| 日韩一区二区高清| 久久国产精品免费| 国产香蕉久久精品综合网| kk眼镜猥琐国模调教系列一区二区| 国产精品久久久久久久久快鸭 | 91成人在线免费观看| 亚洲电影视频在线| 欧美成人福利视频| 成人激情综合网站| 亚洲一二三四在线观看| 日韩一级二级三级精品视频| 国产激情精品久久久第一区二区| 国产精品福利影院| 91麻豆精品91久久久久同性| 国产在线精品一区二区| 亚洲日穴在线视频|