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

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

?? shell.yacc

?? vxworks5.5.1源代碼。完整源代碼
?? 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*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产入口在线| av一二三不卡影片| 岛国一区二区三区| 99国产一区二区三精品乱码| 欧美日韩一二区| www成人在线观看| 亚洲欧美综合另类在线卡通| 亚洲不卡在线观看| 国产不卡视频一区| 在线免费观看日韩欧美| 日韩欧美一区中文| 中文字幕乱码日本亚洲一区二区| 一区二区三区波多野结衣在线观看| 日本v片在线高清不卡在线观看| 粉嫩av一区二区三区粉嫩| 欧美日韩一级视频| 日本一区二区久久| 性欧美大战久久久久久久久| 国产精品资源在线| 69精品人人人人| 中文乱码免费一区二区| 日本在线不卡视频一二三区| 成人一区在线看| 欧美一三区三区四区免费在线看| 国产欧美精品一区二区色综合 | 日本网站在线观看一区二区三区| 国产电影精品久久禁18| 欧美精品一二三四| 17c精品麻豆一区二区免费| 欧美a级一区二区| 一本高清dvd不卡在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲乱码日产精品bd| 狠狠色综合播放一区二区| 欧美羞羞免费网站| 一区在线中文字幕| 国产一区二区三区在线观看免费视频| 91丝袜国产在线播放| 久久久久久久综合狠狠综合| 天天av天天翘天天综合网| av网站免费线看精品| 久久久久久麻豆| 裸体一区二区三区| 欧洲视频一区二区| 中文字幕一区二区三区乱码在线 | 日韩精品一区在线观看| 亚洲国产一区二区视频| 成年人国产精品| 久久久国产一区二区三区四区小说 | 极品少妇一区二区| 国产女人水真多18毛片18精品视频 | 极品少妇一区二区三区精品视频 | 日日骚欧美日韩| 色综合久久综合网欧美综合网| 精品国产乱码久久久久久老虎 | 欧美精品国产精品| 一区二区免费看| 一本大道久久a久久精二百| 国产女人aaa级久久久级| 国产一二精品视频| 精品国产露脸精彩对白| 蜜臀va亚洲va欧美va天堂| 欧美三级电影网| 亚洲动漫第一页| 欧美在线不卡一区| 亚洲国产日韩精品| 欧美在线观看一二区| 亚洲精品亚洲人成人网| 99re热视频这里只精品| 中文字幕一区日韩精品欧美| 成人免费视频国产在线观看| 欧美激情艳妇裸体舞| 风间由美一区二区三区在线观看| 久久一留热品黄| 国产美女在线精品| 国产欧美日韩视频在线观看| 国产成人小视频| 国产蜜臀97一区二区三区| 成人黄色小视频在线观看| 国产精品美女久久久久久2018| 国产精品一卡二卡| 国产精品网友自拍| 波多野结衣视频一区| 1024精品合集| 91国偷自产一区二区三区观看| 亚洲精品乱码久久久久久久久 | 亚洲精品乱码久久久久久黑人 | 一区二区激情小说| 在线免费一区三区| 午夜伊人狠狠久久| 91麻豆精品国产| 国产一区在线观看麻豆| 亚洲国产精品t66y| 91一区二区三区在线观看| 亚洲电影欧美电影有声小说| 日韩一本二本av| 丁香激情综合五月| 亚洲一区二区视频| 日韩精品一区二区三区四区视频 | 日本一区二区不卡视频| 色综合久久天天综合网| 日日夜夜免费精品| 国产欧美综合色| 日本福利一区二区| 日韩二区三区在线观看| 久久久亚洲精品石原莉奈| 99精品视频在线免费观看| 性做久久久久久| 国产日韩一级二级三级| 在线观看视频一区二区欧美日韩| 日韩精品一级中文字幕精品视频免费观看 | 日韩精品一区二区三区在线播放| 国内精品伊人久久久久av一坑 | 成人18视频在线播放| 亚洲一区二区三区自拍| 欧美大片顶级少妇| 91看片淫黄大片一级| 日韩vs国产vs欧美| 国产精品久久久久久久久搜平片 | 美日韩一区二区三区| 国产色产综合色产在线视频| 日本久久电影网| 人人爽香蕉精品| 国产精品视频第一区| 欧美日韩在线播放三区四区| 国产精品亚洲午夜一区二区三区| 亚洲激情五月婷婷| 26uuu国产日韩综合| 一本一道久久a久久精品| 久久99在线观看| 亚洲激情在线播放| 国产视频一区在线观看 | 奇米影视一区二区三区| 亚洲人xxxx| 精品粉嫩超白一线天av| 色婷婷精品大在线视频| 久久精工是国产品牌吗| 一区二区三区中文字幕在线观看| 欧美www视频| 欧美色男人天堂| av成人免费在线| 麻豆精品视频在线| 一区二区国产视频| 国产精品九色蝌蚪自拍| 日韩免费电影一区| 欧美三区在线视频| 99国产精品视频免费观看| 国产黄色91视频| 久久精品99国产精品| 五月天中文字幕一区二区| 亚洲免费观看高清完整版在线 | av亚洲精华国产精华| 国产一区二区三区香蕉| 天天色 色综合| 亚洲六月丁香色婷婷综合久久 | 国产99精品在线观看| 美女视频黄a大片欧美| 亚洲国产wwwccc36天堂| √…a在线天堂一区| 久久精品亚洲精品国产欧美 | 久久精品99国产精品| 天天免费综合色| 亚洲午夜精品一区二区三区他趣| 成人免费小视频| 国产日韩亚洲欧美综合| 欧美精品一区二区高清在线观看| 欧美另类z0zxhd电影| 欧美在线看片a免费观看| 99riav久久精品riav| 99热精品国产| 99免费精品视频| 99综合影院在线| av午夜精品一区二区三区| 粉嫩高潮美女一区二区三区| 国产传媒日韩欧美成人| 国产乱码精品一区二区三| 另类中文字幕网| 久久精品久久99精品久久| 日韩精品一二三区| 日韩av一级电影| 免费国产亚洲视频| 久久国产剧场电影| 久久精品国产网站| 激情综合亚洲精品| 国产精品一区二区你懂的| 国内久久婷婷综合| 国产高清无密码一区二区三区| 国产精品一区二区无线| 粉嫩av一区二区三区粉嫩| eeuss国产一区二区三区| 一本到不卡精品视频在线观看| 色狠狠综合天天综合综合| 精品视频资源站| 日韩欧美在线观看一区二区三区| 日韩欧美色电影| 欧美激情一区二区三区四区| 亚洲欧洲日产国码二区| 亚洲狼人国产精品| 天天综合色天天| 九九热在线视频观看这里只有精品|