⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swf5compiler.y

📁 Ming is a library for generating Macromedia Flash files (.swf), written in C, and includes useful ut
💻 Y
📖 第 1 页 / 共 4 页
字号:
		    else	// expr [ expr ]		    {		      $$ = $2.memexpr;			      /* i */		      bufferConcat($$, $2.obj);		      /* i, a */		      bufferWriteSetRegister($$, 0);	/* ($2.memexpr can use reg0) */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i */		      bufferWriteOp($$, SWFACTION_PUSHDUP);	      /* a, i, i */		      bufferWriteRegister($$, 0);	      /* a, i, i, a */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, i, a[i] */		      bufferWriteOp($$, $1);		      /* a, i, a[i]+1 */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, SWFACTION_SETMEMBER); /* a[i] = a[i]+1 */		      bufferWriteRegister($$, 0);	      /* a[i]+1 */		    }		  }		  else	// identifier		  {		    $$ = newBuffer();		    bufferWriteBuffer($$, $2.ident);		    bufferWriteOp($$, SWFACTION_GETVARIABLE);		    bufferWriteOp($$, $1);		    bufferWriteOp($$, SWFACTION_PUSHDUP);		    bufferConcat($$, $2.ident);		    bufferWriteOp($$, SWFACTION_STACKSWAP);		    bufferWriteOp($$, SWFACTION_SETVARIABLE);		  }		}	| lvalue incdecop %prec POSTFIX		{ if($1.obj)		  {		    if($1.ident)		    {		      $$ = $1.obj;	                      /* a */		      bufferWriteOp($$, SWFACTION_PUSHDUP);	      /* a, a */		      bufferWriteBuffer($$, $1.ident);        /* a, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, a.i */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a.i, a */		      bufferConcat($$, $1.ident);             /* a.i, a, i */		      bufferWriteRegister($$, 0);             /* a.i, a, i, a.i */		      bufferWriteOp($$, $2);		      /* a.i, a, i, a.i+1 */		      bufferWriteOp($$, SWFACTION_SETMEMBER);		    }		    else		    {		      $$ = $1.memexpr;		      bufferConcat($$, $1.obj);               /* i, a */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i */		      bufferWriteOp($$, SWFACTION_PUSHDUP);	      /* a, i, i */		      bufferWriteRegister($$, 0);             /* a, i, i, a */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, i, a[i] */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, $2);		      /* a, i, a[i]+1 */		      bufferWriteOp($$, SWFACTION_SETMEMBER);		      bufferWriteRegister($$, 0);             /* a[i] */		    }		  }		  else		  {		    $$ = newBuffer();		    bufferWriteBuffer($$, $1.ident);		    bufferWriteOp($$, SWFACTION_GETVARIABLE);		    bufferWriteOp($$, SWFACTION_PUSHDUP);		    bufferWriteOp($$, $2);		    bufferConcat($$, $1.ident);		    bufferWriteOp($$, SWFACTION_STACKSWAP);		    bufferWriteOp($$, SWFACTION_SETVARIABLE);		  }		}	| '(' expr ')'		{ $$ = $2; }		| lvalue assignop expr		{ if($1.obj)		  {		    if($1.ident)		    {		      $$ = $1.obj;			      /* a */		      bufferWriteOp($$, SWFACTION_PUSHDUP);	      /* a, a */		      bufferWriteBuffer($$, $1.ident);	      /* a, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, a.i */		      bufferConcat($$, $3);		      /* a, a.i, v */		      bufferWriteOp($$, $2);		      /* a, a.i+v */		      bufferConcat($$, $1.ident);	      /* a, a.i+v, i */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a.i+v */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, SWFACTION_SETMEMBER); /* a.i = a.i+v */		      bufferWriteRegister($$, 0);		    }		    else		    {		      $$ = $1.memexpr;			      /* i */		      bufferConcat($$, $1.obj);		      /* i, a */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i */		      bufferWriteOp($$, SWFACTION_PUSHDUP);	      /* a, i, i */		      bufferWriteRegister($$, 0);	      /* a, i, i, a */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, i, a[i] */		      bufferConcat($$, $3);		      /* a, i, a[i], v */		      bufferWriteOp($$, $2);		      /* a, i, a[i]+v */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, SWFACTION_SETMEMBER); /* a[i] = a[i]+v */		      bufferWriteRegister($$, 0);		    }		  }		  else		  {		    $$ = $1.ident;		    bufferWriteOp($$, SWFACTION_PUSHDUP);		    bufferWriteOp($$, SWFACTION_GETVARIABLE);		    bufferConcat($$, $3);		    bufferWriteOp($$, $2);		    bufferWriteSetRegister($$, 0);		    bufferWriteOp($$, SWFACTION_SETVARIABLE);		    bufferWriteRegister($$, 0);		  }		}	;primary_constant	: BOOLEAN		{ $$ = newBuffer();		  bufferWriteBoolean($$, $1); }	| NULLVAL		{ $$ = newBuffer();		  bufferWriteNull($$); }	| UNDEFINED		{ $$ = newBuffer();		  bufferWriteUndef($$); }	| STRING		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  free($1); }	| INTEGER		{ $$ = newBuffer();		  bufferWriteInt($$, $1); }	| DOUBLE		{ $$ = newBuffer();		  bufferWriteDouble($$, $1); }	;init_vars	: init_var	| init_vars ',' init_var		{ $$ = $1;		  bufferConcat($$, $3); }	;init_var	: identifier type_attr '=' expr_or_obj		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  free($1);		  bufferConcat($$, $4);		  bufferWriteOp($$, SWFACTION_DEFINELOCAL); }	| identifier type_attr		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  free($1);		  bufferWriteOp($$, SWFACTION_DEFINELOCAL2); }	;assign_stmt	: ASM '{'		{ asmBuffer = newBuffer(); }	  opcode_list '}'		{ $$ = asmBuffer; }	| VAR init_vars		{ $$ = $2; }	| void_function_call	| delete_call		{ $$ = $1;		  bufferWriteOp($$, SWFACTION_POP); }	| function_call		{ $$ = $1;		  bufferWriteOp($$, SWFACTION_POP); }	| method_call		{ $$ = $1;		  bufferWriteOp($$, SWFACTION_POP); }	| incdecop lvalue %prec INCR		{ if($2.obj)		  {		    if($2.ident)		    {		      $$ = $2.obj;		              /* a */		      bufferWriteOp($$, SWFACTION_PUSHDUP);	      /* a, a */		      bufferWriteBuffer($$, $2.ident);	      /* a, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, a.i */		      bufferWriteOp($$, $1);		      /* a, a.i+1 */		      bufferConcat($$, $2.ident);	      /* a, a.i+1, i */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a.i+1 */		      bufferWriteOp($$, SWFACTION_SETMEMBER); /* a.i = a.i+1 */		    }		    else		    {		      /* weird contortions so that $2.memexpr can use reg 0 */		      $$ = $2.memexpr;			      /* i */		      bufferConcat($$, $2.obj);		      /* i, a */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i */		      bufferWriteOp($$, SWFACTION_PUSHDUP);	      /* a, i, i */		      bufferWriteRegister($$, 0);	      /* a, i, i, a */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, i, a[i] */		      bufferWriteOp($$, $1);		      /* a, i, a[i]+1 */		      bufferWriteOp($$, SWFACTION_SETMEMBER); /* a[i] = a[i]+1 */		    }		  }		  else		  {		    $$ = $2.ident;		    bufferWriteOp($$, SWFACTION_PUSHDUP);		    bufferWriteOp($$, SWFACTION_GETVARIABLE);		    bufferWriteOp($$, $1);		    bufferWriteOp($$, SWFACTION_SETVARIABLE);		  }		}	| lvalue incdecop %prec POSTFIX		{ if($1.obj)		  {		    if($1.ident)		    {		      $$ = $1.obj;			      /* a */		      bufferWriteOp($$, SWFACTION_PUSHDUP);       /* a, a */		      bufferWriteBuffer($$, $1.ident);	      /* a, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, a.i */		      bufferWriteOp($$, $2);                  /* a, a.i+1 */		      bufferConcat($$, $1.ident);             /* a, a.i+1, i */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a.i+1 */		      bufferWriteOp($$, SWFACTION_SETMEMBER); /* a.i = a.i+1 */		    }		    else		    {		      /* weird contortions so that $1.memexpr can use reg 0 */		      $$ = $1.memexpr;	/* i */		      bufferConcat($$, $1.obj);		      /* i, a */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i */		      bufferWriteOp($$, SWFACTION_PUSHDUP);       /* a, i, i */		      bufferWriteRegister($$, 0);             /* a, i, i, a */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, i, a[i] */		      bufferWriteOp($$, $2);                  /* a, i, a[i]+1 */		      bufferWriteOp($$, SWFACTION_SETMEMBER); /* a[i] = a[i]+1 */		    }		  }		  else		  {		    $$ = $1.ident;		    bufferWriteOp($$, SWFACTION_PUSHDUP);			    bufferWriteOp($$, SWFACTION_GETVARIABLE);		    bufferWriteOp($$, $2);		    bufferWriteOp($$, SWFACTION_SETVARIABLE);		  }		}	| lvalue '=' expr_or_obj		{ if($1.obj)		  {		    $$ = $1.obj;		    if($1.ident)		      bufferConcat($$, $1.ident);		    else		      bufferConcat($$, $1.memexpr);		    bufferConcat($$, $3);		    bufferWriteOp($$, SWFACTION_SETMEMBER);		  }		  else		  {		    $$ = $1.ident;		    bufferConcat($$, $3);		    bufferWriteOp($$, SWFACTION_SETVARIABLE);		  }		}	| lvalue assignop expr		{ if($1.obj)		  {		    if($1.ident)		    {		      $$ = $1.obj;			      /* a */		      bufferWriteOp($$, SWFACTION_PUSHDUP);	      /* a, a */		      bufferWriteBuffer($$, $1.ident);	      /* a, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, a.i */		      bufferConcat($$, $3);		      /* a, a.i, v */		      bufferWriteOp($$, $2);		      /* a, a.i+v */		      bufferConcat($$, $1.ident);	      /* a, a.i+v, i */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a.i+v */		      bufferWriteOp($$, SWFACTION_SETMEMBER); /* a.i = a.i+v */		    }		    else		    {		      $$ = $1.memexpr;			      /* i */		      bufferConcat($$, $1.obj);		      /* i, a */		      bufferWriteSetRegister($$, 0);		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i */		      bufferWriteOp($$, SWFACTION_PUSHDUP);	      /* a, i, i */		      bufferWriteRegister($$, 0);	      /* a, i, i, a */		      bufferWriteOp($$, SWFACTION_STACKSWAP);      /* a, i, a, i */		      bufferWriteOp($$, SWFACTION_GETMEMBER); /* a, i, a[i] */		      bufferConcat($$, $3);		      /* a, i, a[i], v */		      bufferWriteOp($$, $2);		      /* a, i, a[i]+v */		      bufferWriteOp($$, SWFACTION_SETMEMBER); /* a[i] = a[i]+v */		    }		  }		  else		  {		    $$ = $1.ident;		    bufferWriteOp($$, SWFACTION_PUSHDUP);		    bufferWriteOp($$, SWFACTION_GETVARIABLE);		    bufferConcat($$, $3);		    bufferWriteOp($$, $2);		    bufferWriteOp($$, SWFACTION_SETVARIABLE);		  }		}	;/* assembler stuff */opcode_list	: opcode	| opcode_list opcode	{ $$ = $1 + $2; }	;with	: WITH				{ $$ = bufferWriteOp(asmBuffer,						     SWFACTION_WITH); }	  opcode_list END	{ $$ = $<len>2 + $3;				  bufferPatchLength(asmBuffer, $3); }	;push_item	: STRING		{ $$ = bufferWriteConstantString(asmBuffer, $1,								 strlen($1)+1); }	| INTEGER		{ $$ = bufferWriteInt(asmBuffer, $1); }	| DOUBLE		{ $$ = bufferWriteDouble(asmBuffer, $1); }	| BOOLEAN		{ bufferWriteU8(asmBuffer, PUSH_BOOLEAN);				  $$ = bufferWriteU8(asmBuffer, $1)+1;				  bufferPatchPushLength(asmBuffer, 2); }	| NULLVAL		{ $$ = bufferWriteU8(asmBuffer, PUSH_NULL);				  bufferPatchPushLength(asmBuffer, 1); }	| UNDEFINED		{ $$ = bufferWriteU8(asmBuffer, PUSH_UNDEF);				  bufferPatchPushLength(asmBuffer, 1); }	| REGISTER		{ bufferWriteU8(asmBuffer, PUSH_REGISTER);				  $$ = bufferWriteU8(asmBuffer,						     (char)atoi($1))+1;				  bufferPatchPushLength(asmBuffer, 2); }	;push_list	: push_item			{ $$ = $1; }	| push_list ',' push_item	{ $$ = $1 + $3; }	;opcode	: PUSH 			{ $$ = bufferWritePushOp(asmBuffer);				  $$ += bufferWriteS16(asmBuffer, 0); }	  push_list		{ $$ = $<len>2 + $3;				  bufferPatchLength(asmBuffer, $3); }	| with	| SETREGISTER REGISTER				{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_STOREREGISTER);				  $$ += bufferWriteS16(asmBuffer, 1);				  $$ += bufferWriteU8(asmBuffer,						      (char)atoi($2)); }	/* no args */	| CALLFUNCTION		{ $$ = bufferWriteOp(asmBuffer,						     SWFACTION_CALLFUNCTION); }	| RETURN		{ $$ = bufferWriteOp(asmBuffer,						     SWFACTION_RETURN); }	| CALLMETHOD	{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_CALLMETHOD); }	| NEWOBJECT		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_NEWOBJECT); }	| NEWMETHOD		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_NEWMETHOD); }	| AND			{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_BITWISEAND); }	| OR			{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_BITWISEOR); }	| XOR			{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_BITWISEXOR); }	| MODULO		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_MODULO); }	| ADD			{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_ADD2); }	| LESSTHAN		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_LESS2); }	| EQUALS		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_EQUALS2); }	| INC			{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_INCREMENT); }	| DEC			{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_DECREMENT); }	| TYPEOF		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_TYPEOF); }	| INSTANCEOF	{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_INSTANCEOF); }	| ENUMERATE		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_ENUMERATE); }	| DELETE		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_DELETE); }	| NEW			{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_NEWOBJECT); }	| INITARRAY		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_INITARRAY); }	| INITOBJECT		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_INITOBJECT); }	| GETMEMBER		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_GETMEMBER); }	| SETMEMBER		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_SETMEMBER); }	| SHIFTLEFT		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_SHIFTLEFT); }	| SHIFTRIGHT		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_SHIFTRIGHT); }	| SHIFTRIGHT2		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_SHIFTRIGHT2); }	| VAR			{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_DEFINELOCAL2); }	| EXTENDS		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_EXTENDS); }	| TARGETPATH		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_TARGETPATH); }	| IMPLEMENTS		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_IMPLEMENTSOP); }	| FSCOMMAND2		{ $$ = bufferWriteOp(asmBuffer, 						     SWFACTION_FSCOMMAND2); }	| CAST			{ $$ = bufferWriteOp(asmBuffer,						     SWFACTION_CASTOP);	}	/* f4 ops */	| OLDADD		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_ADD); }	| SUBTRACT		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_SUBTRACT); }	| MULTIPLY		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_MULTIPLY); }	| DIVIDE		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_DIVIDE); }	| OLDEQUALS		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_EQUAL); }	| OLDLESSTHAN		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_LESSTHAN); }	| LOGICALAND		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_LOGICALAND); }	| LOGICALOR		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_LOGICALOR); }	| NOT			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_LOGICALNOT); }	| STRINGEQ		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_STRINGEQ); }	| STRINGLENGTH		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_STRINGLENGTH); }	| SUBSTRING		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_SUBSTRING); }	| INT			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_INT); }	| DUP			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_PUSHDUP); }	| SWAP			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_STACKSWAP); }	| POP			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_POP); }	| GETVARIABLE		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_GETVARIABLE); }	| SETVARIABLE		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_SETVARIABLE); }	| GETPROPERTY		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_GETPROPERTY); }	| SETPROPERTY		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_SETPROPERTY); }	| TONUMBER		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_TONUMBER); }	| TOSTRING		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_TOSTRING); }	| SETTARGETEXPRESSION	{ $$ = bufferWriteOp(asmBuffer, SWFACTION_SETTARGET2); }	| CONCAT		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_STRINGCONCAT); }	| DUPLICATEMOVIECLIP	{ $$ = bufferWriteOp(asmBuffer, SWFACTION_DUPLICATECLIP); }	| REMOVEMOVIECLIP	{ $$ = bufferWriteOp(asmBuffer, SWFACTION_REMOVECLIP); }	| TRACE			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_TRACE); }	| STRINGLESSTHAN	{ $$ = bufferWriteOp(asmBuffer, SWFACTION_STRINGCOMPARE); }	| RANDOM		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_RANDOMNUMBER); }	| MBLENGTH		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_MBLENGTH); }	| ORD			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_ORD); }	| CHR			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_CHR); }	| GETTIMER		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_GETTIME); }	| MBSUBSTRING		{ $$ = bufferWriteOp(asmBuffer, SWFACTION_MBSUBSTRING); }	| MBORD			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_MBORD); }	| MBCHR			{ $$ = bufferWriteOp(asmBuffer, SWFACTION_MBCHR); }	/* with args */	| BRANCHALWAYS STRING	{ $$ = bufferWriteOp(asmBuffer, SWFACTION_JUMP);				  $$ += bufferWriteS16(asmBuffer, 2);				  $$ += bufferBranchTarget(asmBuffer, $2); }	| BRANCHIFTRUE STRING	{ $$ = bufferWriteOp(asmBuffer, SWFACTION_IF);				  $$ += bufferWriteS16(asmBuffer, 2);				  $$ += bufferBranchTarget(asmBuffer, $2); }	;property	: STRING	 	{ $$ = lookupProperty($1); } // Ming extension !	| _P_X 			{ $$ = PROPERTY_X; }	| _P_Y 			{ $$ = PROPERTY_Y; }	| _P_XSCALE		{ $$ = PROPERTY_XSCALE; }	| _P_YSCALE		{ $$ = PROPERTY_YSCALE; }	| _P_CURRENTFRAME	{ $$ = PROPERTY_CURRENTFRAME; }	| _P_TOTALFRAMES	{ $$ = PROPERTY_TOTALFRAMES; }	| _P_ALPHA		{ $$ = PROPERTY_ALPHA; }	| _P_VISIBLE		{ $$ = PROPERTY_VISIBLE; }	| _P_WIDTH		{ $$ = PROPERTY_WIDTH; }	| _P_HEIGHT		{ $$ = PROPERTY_HEIGHT; }	| _P_ROTATION		{ $$ = PROPERTY_ROTATION; }	| _P_TARGET		{ $$ = PROPERTY_TARGET; }	| _P_FRAMESLOADED	{ $$ = PROPERTY_FRAMESLOADED; }	| _P_NAME		{ $$ = PROPERTY_NAME; }	| _P_DROPTARGET		{ $$ = PROPERTY_DROPTARGET; }	| _P_URL		{ $$ = PROPERTY_URL; }	| _P_HIGHQUALITY	{ $$ = PROPERTY_HIGHQUALITY; }	| _P_FOCUSRECT		{ $$ = PROPERTY_FOCUSRECT; }	| _P_SOUNDBUFTIME	{ $$ = PROPERTY_SOUNDBUFTIME; }		| _P_QUALITY		{ $$ = PROPERTY_QUALITY; }	| _P_XMOUSE		{ $$ = PROPERTY_XMOUSE; }	| _P_YMOUSE		{ $$ = PROPERTY_YMOUSE; }	;%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -