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

📄 swf4compiler.y

📁 flash swf file player
💻 Y
📖 第 1 页 / 共 2 页
字号:
	| GOTOFRAME '(' NUMBER ')'		{ $$ = newBuffer();		  bufferWriteU8($$, SWFACTION_GOTOFRAME);		  bufferWriteS16($$, 2);		  bufferWriteS16($$, atoi($3));		  free($3); }	| GOTOFRAME '(' STRING ')'		{ $$ = newBuffer();		  bufferWriteU8($$, SWFACTION_GOTOLABEL);		  bufferWriteS16($$, strlen($3)+1);		  bufferWriteHardString($$, (byte*)$3, strlen($3)+1);		  free($3); }	| GOTOFRAME '(' expr ')'		{ $$ = $3;		  bufferWriteU8($$, SWFACTION_GOTOEXPRESSION);		  bufferWriteS16($$, 1);		  bufferWriteU8($$, 0); } /* XXX - and stop */	| GOTOANDPLAY '(' expr ')'		{ $$ = $3;		  bufferWriteU8($$, SWFACTION_GOTOEXPRESSION);		  bufferWriteS16($$, 1);		  bufferWriteU8($$, 1); } /* XXX - and play */	| SETTARGET '(' STRING ')'		{ $$ = newBuffer();		  bufferWriteU8($$, SWFACTION_SETTARGET);		  bufferWriteS16($$, strlen($3)+1);		  bufferWriteHardString($$, (byte*)$3, strlen($3)+1);		  free($3); }	| SETTARGET '(' expr ')'		{ $$ = $3;		  bufferWriteU8($$, SWFACTION_SETTARGETEXPRESSION); }	| TELLTARGET '(' STRING ')' stmt		{ $$ = newBuffer();			/* SetTarget(STRING) */		  bufferWriteU8($$, SWFACTION_SETTARGET);		  bufferWriteS16($$, strlen($3)+1);		  bufferWriteHardString($$, (byte*)$3, strlen($3)+1);			/* stmt */		  bufferConcat($$, $5);			/* SetTarget('') */		  bufferWriteU8($$, SWFACTION_SETTARGET);		  bufferWriteS16($$, 1);		  bufferWriteU8($$, 0);		  free($3); }	| TELLTARGET '(' expr ')' stmt		{ $$ = $3;			/* SetTarget(expr) */		  bufferWriteU8($$, SWFACTION_SETTARGETEXPRESSION); 			/* stmt */		  bufferConcat($$, $5);			/* SetTarget('') */		  bufferWriteU8($$, SWFACTION_SETTARGET);		  bufferWriteS16($$, 1);		  bufferWriteU8($$, 0); }	;function_call	: EVAL '(' expr ')'		{ $$ = $3;		  bufferWriteU8($$, SWFACTION_GETVARIABLE); }	| TIME '(' ')'		{ $$ = newBuffer();		  bufferWriteU8($$, SWFACTION_GETTIMER); }	| RANDOM '(' expr ')'		{ $$ = $3;		  bufferWriteU8($$, SWFACTION_RANDOM); }	| LENGTH '(' expr ')'		{ $$ = $3;		  bufferWriteU8($$, SWFACTION_STRINGLENGTH); }	| INT '(' expr ')'		{ $$ = $3;		  bufferWriteU8($$, SWFACTION_INT); }	| ORD '(' expr ')'		{ $$ = $3;		  bufferWriteU8($$, SWFACTION_ORD); }	| CHR '(' expr ')'		{ $$ = $3;		  bufferWriteU8($$, SWFACTION_CHR); }	| CONCAT '(' expr ',' expr ')'		{ $$ = $3;		  bufferConcat($$, $5);		  bufferWriteU8($$, SWFACTION_STRINGCONCAT); }	| SUBSTR '(' expr ',' expr ',' expr ')'		{ $$ = $3;		  bufferConcat($$, $5);		  bufferConcat($$, $7);		  bufferWriteU8($$, SWFACTION_SUBSTRING); }	| GETPROPERTY '(' expr ',' STRING ')'		{ $$ = newBuffer();		  bufferConcat($$, $3);		  bufferWriteGetProperty($$, $5);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  free($5); }	;pf_expr	: lhs_expr "++" %prec POSTFIX		{ $$ = newBuffer();		  bufferWriteBuffer($$, $1);		  bufferWriteU8($$, SWFACTION_GETVARIABLE);		  bufferWriteBuffer($$, $1);		  bufferConcat($$, $1);		  bufferWriteU8($$, SWFACTION_GETVARIABLE);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_ADD);		  bufferWriteU8($$, SWFACTION_SETVARIABLE); }	| lhs_expr "--" %prec POSTFIX		{ $$ = newBuffer();		  bufferWriteBuffer($$, $1);		  bufferWriteU8($$, SWFACTION_GETVARIABLE);		  bufferWriteBuffer($$, $1);		  bufferConcat($$, $1);		  bufferWriteU8($$, SWFACTION_GETVARIABLE);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_SUBTRACT);		  bufferWriteU8($$, SWFACTION_SETVARIABLE); }	;/* these leave a value on the stack */rhs_expr	: function_call	| '(' rhs_expr ')'		{ $$ = $2; }	| NUMBER		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  free($1); }	| '-' NUMBER %prec NEGATE		{ $$ = newBuffer();		  bufferWriteString($$, "-", 2);		  bufferWriteString($$, $2, strlen($2)+1);		  free($2); }	| STRING		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  free($1); }	| variable		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteU8($$, SWFACTION_GETVARIABLE);		  free($1); }	| sprite		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  free($1); }	| sprite '.' IDENTIFIER		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteGetProperty($$, $3);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  free($3);		  free($1); }	| "++" sprite '.' IDENTIFIER		{ $$ = newBuffer();		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteGetProperty($$, $4);		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteSetProperty($$, $4);		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteGetProperty($$, $4);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_ADD);		  bufferWriteU8($$, SWFACTION_SETPROPERTY);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  free($2);		  free($4); }	| "++" lhs_expr		{ $$ = $2;		  bufferWriteU8($$, SWFACTION_DUP);		  bufferWriteU8($$, SWFACTION_DUP);		  bufferWriteU8($$, SWFACTION_GETVARIABLE);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_ADD);		  bufferWriteU8($$, SWFACTION_SETVARIABLE);		  bufferWriteU8($$, SWFACTION_GETVARIABLE); }	| "--" sprite '.' IDENTIFIER		{ $$ = newBuffer();		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteGetProperty($$, $4);		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteSetProperty($$, $4);		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteGetProperty($$, $4);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_ADD);		  bufferWriteU8($$, SWFACTION_SETPROPERTY);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  free($2);		  free($4); }	| "--" lhs_expr		{ $$ = $2;		  bufferWriteU8($$, SWFACTION_DUP);		  bufferWriteU8($$, SWFACTION_DUP);		  bufferWriteU8($$, SWFACTION_GETVARIABLE);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_SUBTRACT);		  bufferWriteU8($$, SWFACTION_SETVARIABLE);		  bufferWriteU8($$, SWFACTION_GETVARIABLE); }	| '-' rhs_expr %prec UMINUS		{ $$ = $2;		  bufferWriteString($2, "-1", 3);		  bufferWriteU8($2, SWFACTION_MULTIPLY); }	| '!' rhs_expr		{ $$ = $2;		  bufferWriteU8($2, SWFACTION_LOGICALNOT); }	| lhs_expr '=' rhs_expr /* assign and leave copy on stack */		{ $$ = $1;		  bufferConcat($$, $3);		  bufferWriteU8($$, SWFACTION_DUP);		  bufferWriteU8($$, SWFACTION_SETVARIABLE); }	| rhs_expr '*' rhs_expr		{ $$ = $1;		  bufferConcat($$, $3);		  bufferWriteU8($$, SWFACTION_MULTIPLY); }	| rhs_expr '/' rhs_expr		{ $$ = $1;		  bufferConcat($$, $3);		  bufferWriteU8($$, SWFACTION_DIVIDE); }	| rhs_expr '+' rhs_expr		{ $$ = $1;		  bufferConcat($$, $3);		  bufferWriteU8($$, SWFACTION_ADD); }	| rhs_expr '-' rhs_expr		{ $$ = $1;		  bufferConcat($$, $3);		  bufferWriteU8($$, SWFACTION_SUBTRACT); }	| rhs_expr '&' rhs_expr		{ $$ = $1;		  bufferConcat($$, $3);		  bufferWriteU8($$, SWFACTION_STRINGCONCAT); }	| rhs_expr '<' rhs_expr		{ $$ = $1;		  bufferConcat($$, $3);		  bufferWriteU8($$, SWFACTION_LESSTHAN); }	| rhs_expr '>' rhs_expr		{ $$ = $3;		  bufferConcat($$, $1);		  bufferWriteU8($$, SWFACTION_LESSTHAN); }	| rhs_expr "<=" rhs_expr		{ $$ = $3;		  bufferConcat($$, $1);		  bufferWriteU8($$, SWFACTION_LESSTHAN);		  bufferWriteU8($$, SWFACTION_LOGICALNOT); }	| rhs_expr ">=" rhs_expr		{ bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_LESSTHAN);		  bufferWriteU8($1, SWFACTION_LOGICALNOT); }	| rhs_expr "!==" rhs_expr		{ bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_STRINGEQ);		  bufferWriteU8($1, SWFACTION_LOGICALNOT); }	| rhs_expr "===" rhs_expr		{ bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_STRINGEQ); }	| rhs_expr "<=>" rhs_expr		{ bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_STRINGCOMPARE); }	| rhs_expr "==" rhs_expr		{ bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_EQUAL); }	| rhs_expr "!=" rhs_expr		{ bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_EQUAL);		  bufferWriteU8($1, SWFACTION_LOGICALNOT); }	| rhs_expr "&&" rhs_expr		{ bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_LOGICALAND); }	| rhs_expr "||" rhs_expr		{ bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_LOGICALOR); }	| rhs_expr '?' rhs_expr ':' rhs_expr		{ bufferWriteU8($1, SWFACTION_BRANCHIFTRUE);		  bufferWriteS16($1, 2);		  bufferWriteS16($1, bufferLength($5)+5);		  bufferConcat($1, $5);		  bufferWriteU8($1, SWFACTION_BRANCHALWAYS);		  bufferWriteS16($1, 2);		  bufferWriteS16($1, bufferLength($3));		  bufferConcat($1, $3); }	;variable	: IDENTIFIER	| sprite ':' IDENTIFIER		{ $$ = $1;		  $$ = stringConcat($$, strdup(":"));		  $$ = stringConcat($$, $3); }	;sprite	: THIS		{ $$ = strdup(""); }	| '.'		{ $$ = strdup(""); }	| '/'		{ $$ = strdup("/"); }	| PARENT		{ $$ = strdup(".."); }	| IDENTIFIER		{ $$ = $1; }	| PATH		{ $$ = $1; }	;lhs_expr	: variable		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  free($1); }	| STRING		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  free($1); }	| '(' rhs_expr ')'	{ $$ = $2; }	;assign_stmt	: pf_expr	| void_function_call	| "++" lhs_expr		{ $$ = $2;		  bufferWriteBuffer($$, $2);		  bufferWriteU8($$, SWFACTION_GETVARIABLE);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_ADD);		  bufferWriteU8($$, SWFACTION_SETVARIABLE); }	| "--" lhs_expr                { $$ = $2;		  bufferWriteBuffer($$, $2);		  bufferWriteU8($$, SWFACTION_GETVARIABLE);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_SUBTRACT);		  bufferWriteU8($$, SWFACTION_SETVARIABLE); }	| "++" sprite '.' IDENTIFIER		{ $$ = newBuffer();		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteGetProperty($$, $4);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_ADD);		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteSetProperty($$, $4);		  bufferWriteU8($$, SWFACTION_SETPROPERTY);		  free($2);		  free($4); }	| "--" sprite '.' IDENTIFIER		{ $$ = newBuffer();		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteGetProperty($$, $4);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  bufferWriteString($$, "1", 2);		  bufferWriteU8($$, SWFACTION_SUBTRACT);		  bufferWriteString($$, $2, strlen($2)+1);		  bufferWriteSetProperty($$, $4);		  bufferWriteU8($$, SWFACTION_SETPROPERTY);		  free($2);		  free($4); }	| lhs_expr '=' rhs_expr		{ bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_SETVARIABLE); }	| lhs_expr "*=" rhs_expr		{ bufferWriteBuffer($1, $1);		  bufferWriteU8($1, SWFACTION_GETVARIABLE);		  bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_MULTIPLY);		  bufferWriteU8($1, SWFACTION_SETVARIABLE); }	| lhs_expr "/=" rhs_expr		{ bufferWriteBuffer($1, $1);		  bufferWriteU8($1, SWFACTION_GETVARIABLE);		  bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_DIVIDE);		  bufferWriteU8($1, SWFACTION_SETVARIABLE); }	| lhs_expr "+=" rhs_expr		{ bufferWriteBuffer($1, $1);		  bufferWriteU8($1, SWFACTION_GETVARIABLE);		  bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_ADD);		  bufferWriteU8($1, SWFACTION_SETVARIABLE); }	| lhs_expr "-=" rhs_expr		{ bufferWriteBuffer($1, $1);		  bufferWriteU8($1, SWFACTION_GETVARIABLE);		  bufferConcat($1, $3);		  bufferWriteU8($1, SWFACTION_SUBTRACT);		  bufferWriteU8($1, SWFACTION_SETVARIABLE); }	| sprite '.' IDENTIFIER '=' rhs_expr                { $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteSetProperty($$, $3);		  bufferConcat($$,$5);		  bufferWriteU8($$, SWFACTION_SETPROPERTY);		  free($1);		  free($3); }	| sprite '.' IDENTIFIER "*=" rhs_expr		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteSetProperty($$, $3);		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteGetProperty($$, $3);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  bufferConcat($$, $5);		  bufferWriteU8($$, SWFACTION_MULTIPLY);		  bufferWriteU8($$, SWFACTION_SETPROPERTY);		  free($1);		  free($3); }	| sprite '.' IDENTIFIER "/=" rhs_expr		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteSetProperty($$, $3);		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteGetProperty($$, $3);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  bufferConcat($$, $5);		  bufferWriteU8($$, SWFACTION_DIVIDE);		  bufferWriteU8($$, SWFACTION_SETPROPERTY);		  free($1);		  free($3); }	| sprite '.' IDENTIFIER "+=" rhs_expr		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteSetProperty($$, $3);		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteGetProperty($$, $3);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  bufferConcat($$, $5);		  bufferWriteU8($$, SWFACTION_ADD);		  bufferWriteU8($$, SWFACTION_SETPROPERTY);		  free($1);		  free($3); }	| sprite '.' IDENTIFIER "-=" rhs_expr		{ $$ = newBuffer();		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteSetProperty($$, $3);		  bufferWriteString($$, $1, strlen($1)+1);		  bufferWriteGetProperty($$, $3);		  bufferWriteU8($$, SWFACTION_GETPROPERTY);		  bufferConcat($$, $5);		  bufferWriteU8($$, SWFACTION_SUBTRACT);		  bufferWriteU8($$, SWFACTION_SETPROPERTY);		  free($1);		  free($3); }	;expr	: rhs_expr	;%%

⌨️ 快捷键说明

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