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

📄 evalparse.y

📁 功能较全面的反汇编器:反汇编器ht-2.0.15.tar.gz
💻 Y
字号:
%pure_parser%{#define YYPARSE_PARAM resultptr#include "evaltype.h"#include "eval.h"void yyerror (char *s){	set_eval_error(s);}%}%union {	eval_scalar scalar;	char *ident;	eval_scalarlist scalars;};%token <scalar> EVAL_INT%token <scalar> EVAL_STR%token <scalar> EVAL_FLOAT%token <ident> EVAL_IDENT%type <scalar> scalar%type <scalars> scalarlist%type <scalars> scalarlist_or_null%type <ident> identifier%left ','%right '?' ':'%left '.'%left EVAL_LAND%left EVAL_LXOR%left EVAL_LOR%left '|'%left '^'%left '&'%nonassoc EVAL_EQ%nonassoc EVAL_NE%nonassoc EVAL_STR_EQ%nonassoc EVAL_STR_NE%nonassoc EVAL_LT%nonassoc EVAL_LE%nonassoc EVAL_GT%nonassoc EVAL_GE%nonassoc EVAL_STR_LT%nonassoc EVAL_STR_LE%nonassoc EVAL_STR_GT%nonassoc EVAL_STR_GE%nonassoc EVAL_SHL%nonassoc EVAL_SHR%left '-' '+'%left '*' '/' '%'%left NEG '~' '!'%left EVAL_POW%%input:	scalar			{ *(eval_scalar*)resultptr=$1; };scalar:	  EVAL_INT			{ $$ = $1; }	| EVAL_STR			{ $$ = $1; }	| EVAL_FLOAT			{ $$ = $1; }	| scalar '*' scalar		{ if (!scalar_op(&$$, &$1, &$3, '*')) YYERROR; }	| scalar '/' scalar		{ if (!scalar_op(&$$, &$1, &$3, '/')) YYERROR; }	| scalar '%' scalar		{ if (!scalar_op(&$$, &$1, &$3, '%')) YYERROR; }	| scalar '+' scalar		{ if (!scalar_op(&$$, &$1, &$3, '+')) YYERROR; }	| scalar '-' scalar		{ if (!scalar_op(&$$, &$1, &$3, '-')) YYERROR; }	| scalar '&' scalar		{ if (!scalar_op(&$$, &$1, &$3, '&')) YYERROR; }	| scalar '|' scalar		{ if (!scalar_op(&$$, &$1, &$3, '|')) YYERROR; }	| scalar '^' scalar		{ if (!scalar_op(&$$, &$1, &$3, '^')) YYERROR; }	| scalar EVAL_POW scalar	{ if (!scalar_op(&$$, &$1, &$3, EVAL_POW)) YYERROR; }	| scalar EVAL_SHL scalar	{ if (!scalar_op(&$$, &$1, &$3, EVAL_SHL)) YYERROR; }	| scalar EVAL_SHR scalar	{ if (!scalar_op(&$$, &$1, &$3, EVAL_SHR)) YYERROR; }	| scalar EVAL_EQ scalar		{ if (!scalar_op(&$$, &$1, &$3, EVAL_EQ)) YYERROR; }	| scalar EVAL_NE scalar		{ if (!scalar_op(&$$, &$1, &$3, EVAL_NE)) YYERROR; }	| scalar EVAL_GT scalar		{ if (!scalar_op(&$$, &$1, &$3, EVAL_GT)) YYERROR; }	| scalar EVAL_GE scalar		{ if (!scalar_op(&$$, &$1, &$3, EVAL_GE)) YYERROR; }	| scalar EVAL_LT scalar		{ if (!scalar_op(&$$, &$1, &$3, EVAL_LT)) YYERROR; }	| scalar EVAL_LE scalar		{ if (!scalar_op(&$$, &$1, &$3, EVAL_LE)) YYERROR; }	| scalar EVAL_LAND scalar	{ if (!scalar_op(&$$, &$1, &$3, EVAL_LAND)) YYERROR; }	| scalar EVAL_LXOR scalar	{ if (!scalar_op(&$$, &$1, &$3, EVAL_LXOR)) YYERROR; }	| scalar EVAL_LOR scalar	{ if (!scalar_op(&$$, &$1, &$3, EVAL_LOR)) YYERROR; }	| scalar EVAL_STR_EQ scalar	{ scalar_strop(&$$, &$1, &$3, EVAL_STR_EQ); }	| scalar EVAL_STR_NE scalar	{ scalar_strop(&$$, &$1, &$3, EVAL_STR_NE); }	| scalar EVAL_STR_GT scalar	{ scalar_strop(&$$, &$1, &$3, EVAL_STR_GT); }	| scalar EVAL_STR_GE scalar	{ scalar_strop(&$$, &$1, &$3, EVAL_STR_GE); }	| scalar EVAL_STR_LT scalar	{ scalar_strop(&$$, &$1, &$3, EVAL_STR_LT); }	| scalar EVAL_STR_LE scalar	{ scalar_strop(&$$, &$1, &$3, EVAL_STR_LE); }	| '-' scalar %prec NEG		{ scalar_negset(&$$, &$2); }	| '~' scalar 			{ scalar_notset(&$$, &$2); }	| '!' scalar 			{ scalar_lnotset(&$$, &$2); }	| '(' scalar ')'			{ $$ = $2; }	| scalar '?' scalar ':' scalar	{ scalar_miniif(&$$, &$1, &$3, &$5); }	| scalar '.' scalar		{			scalar_concat(&$$, &$1, &$3);			scalar_destroy(&$1);			scalar_destroy(&$3);		}	| identifier '(' scalarlist_or_null ')'			{			int r=evalfunc(&$$, $1, &$3);			scalarlist_destroy(&$3);			free($1);			if (!r) YYERROR;		}	| identifier					{			int r=evalsymbol(&$$, $1);			free($1);			if (!r) YYERROR;		};scalarlist_or_null:	/* empty */		{			eval_scalarlist s;			s.count=0;			s.scalars=NULL;			$$ = s;		}	| scalarlist			{ $$ = $1; };scalarlist: scalar			{ scalarlist_set(&$$, &$1); }	| scalarlist ',' scalarlist		{			scalarlist_concat(&$$, &$1, &$3);			scalarlist_destroy_gentle(&$1);			scalarlist_destroy_gentle(&$3);		};identifier: EVAL_IDENT			{ $$ = $1; };	%%

⌨️ 快捷键说明

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