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

📄 hys.y

📁 由matlab开发的hybrid系统的描述语言
💻 Y
📖 第 1 页 / 共 3 页
字号:
output_interface_t:	OUTPUT '{' output_decl_list_t '}' {};parameter_interface_t:	PARAMETER '{' parameter_decl_list_t '}' {};aux_impl_t:	/*empty*/ {}	| AUX '{' aux_decl_list_t '}' {};/******************************************************************************  * variable and parameter declarations                                        *  ******************************************************************************/state_decl_list_t:	state_decl_t {}	| state_decl_list_t state_decl_t {};input_decl_list_t:	input_decl_t {}	| input_decl_list_t input_decl_t {};	output_decl_list_t:	output_decl_t {}	| output_decl_list_t output_decl_t {};parameter_decl_list_t:	parameter_decl_t {}	| parameter_decl_list_t parameter_decl_t {};aux_decl_list_t:	aux_decl_t {}	| aux_decl_list_t aux_decl_t {};state_decl_t:	REAL state_real_ident_list_t ';' {}	| BOOL state_bool_ident_list_t ';' {};input_decl_t:	REAL input_real_ident_list_t ';' {}	| BOOL input_bool_ident_list_t ';' {};output_decl_t:	REAL output_real_ident_list_t ';' {}	| BOOL output_bool_ident_list_t ';' {};parameter_decl_t:	REAL parameter_real_ident_list_t ';' {}	| BOOL parameter_bool_ident_list_t ';' {};aux_decl_t:	REAL aux_real_ident_list_t ';' {}	| BOOL aux_bool_ident_list_t ';' {};	new_ident_t:	NEW_IDENTIFIER		{ $$=$1 }	| DEFAULT_PARAMETER		{//cout << "OVERWRITING DEFAULT " << $1->get_name() <<endl; cout.flush();								assert($1->is_virginal());			$$=new string($1->get_name());			((t_parser_input*)p_in)->globals->symbol_table->remove($1);		}	| NONDEFAULT_PARAMETER		{			yyerror("Parameter already defined");		};		parameter_t:	NONDEFAULT_PARAMETER		{ $$=$1 }	| DEFAULT_PARAMETER		{ $$=$1 };		state_real_ident_list_t:	new_ident_t opt_var_minmax_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(STATE_KIND, REAL_TYPE, * $1);			s->set_minmaxeps($2);			s->set_declared(@1.first_line);		}	| state_real_ident_list_t ',' new_ident_t opt_var_minmax_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(STATE_KIND, REAL_TYPE, * $3);			s->set_minmaxeps($4);			s->set_declared(@3.first_line);		};state_bool_ident_list_t:	new_ident_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(STATE_KIND, BOOL_TYPE, * $1);			s->set_declared(@1.first_line);			s->set_minmaxeps(new Min_max_eps(new Number_expr(0.0, ((t_parser_input*)p_in)->globals), new Number_expr(1.0, ((t_parser_input*)p_in)->globals), NULL, ((t_parser_input*)p_in)->globals) );		}	| state_bool_ident_list_t ',' new_ident_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(STATE_KIND, BOOL_TYPE, * $3);			s->set_declared(@3.first_line);			s->set_minmaxeps(new Min_max_eps(new Number_expr(0.0, ((t_parser_input*)p_in)->globals), new Number_expr(1.0, ((t_parser_input*)p_in)->globals), NULL, ((t_parser_input*)p_in)->globals) );		};input_real_ident_list_t:	new_ident_t opt_var_minmax_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(INPUT_KIND, REAL_TYPE, * $1);			s->set_minmaxeps($2);			s->set_declared(@1.first_line);		}	| input_real_ident_list_t ',' new_ident_t opt_var_minmax_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(INPUT_KIND, REAL_TYPE, * $3);			s->set_minmaxeps($4);			s->set_declared(@3.first_line);		};input_bool_ident_list_t:	new_ident_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(INPUT_KIND, BOOL_TYPE, * $1);			s->set_declared(@1.first_line);			s->set_minmaxeps(new Min_max_eps(new Number_expr(0.0, ((t_parser_input*)p_in)->globals), new Number_expr(1.0, ((t_parser_input*)p_in)->globals), NULL, ((t_parser_input*)p_in)->globals) );					}	| input_bool_ident_list_t ',' new_ident_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(INPUT_KIND, BOOL_TYPE, * $3);			s->set_declared(@3.first_line);			s->set_minmaxeps(new Min_max_eps(new Number_expr(0.0, ((t_parser_input*)p_in)->globals), new Number_expr(1.0, ((t_parser_input*)p_in)->globals), NULL, ((t_parser_input*)p_in)->globals) );		};output_real_ident_list_t:	new_ident_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(OUTPUT_KIND, REAL_TYPE, * $1);			s->set_declared(@1.first_line);		}                                                  	| output_real_ident_list_t ',' new_ident_t		{                                                  			const Var_symbol *s;                             			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(OUTPUT_KIND, REAL_TYPE, * $3);			s->set_declared(@3.first_line);		};                                                                                                                    output_bool_ident_list_t:                                          	new_ident_t                                                		{                                                  			const Var_symbol *s;                             			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(OUTPUT_KIND, BOOL_TYPE, * $1);			s->set_declared(@1.first_line);		}                                                  	| output_bool_ident_list_t ',' new_ident_t                 		{                                                  			const Var_symbol *s;                             			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(OUTPUT_KIND, BOOL_TYPE, * $3);			s->set_declared(@3.first_line);		};parameter_real_ident_list_t:	parameter_real_ident_t	| parameter_real_ident_list_t ',' parameter_real_ident_t;parameter_bool_ident_list_t:	parameter_bool_ident_t	| parameter_bool_ident_list_t ',' parameter_bool_ident_t;	parameter_real_ident_t:	new_ident_t '=' real_expr_t		{ 			const Param_symbol *s;			s=(const Param_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(PARAM_KIND, REAL_TYPE, * $1);			s->set_declared(@1.first_line);			s->set_value($3);		}	| new_ident_t		{ 			const Param_symbol *s;			s=(const Param_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(PARAM_KIND, REAL_TYPE, * $1);			s->set_declared(@1.first_line);			s->set_value(NULL);		};parameter_bool_ident_t:	new_ident_t '=' TRUE		{ 			const Param_symbol *s;			s=(const Param_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(PARAM_KIND, BOOL_TYPE, * $1);			s->set_value(new Number_expr(true, ((t_parser_input*)p_in)->globals));			s->set_declared(@1.first_line);		}	| new_ident_t '=' FALSE		{ 			const Param_symbol *s;			s=(const Param_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(PARAM_KIND, BOOL_TYPE, * $1);			s->set_value(new Number_expr(false, ((t_parser_input*)p_in)->globals));			s->set_declared(@1.first_line);		};		aux_real_ident_list_t:	new_ident_t opt_var_minmax_t		{ 			const Var_symbol *s;			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(AUX_KIND, REAL_TYPE, * $1);			s->set_minmaxeps($2);			s->set_declared(@1.first_line);		}                                                  	| aux_real_ident_list_t ',' new_ident_t opt_var_minmax_t		{                                                  			const Var_symbol *s;                             			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(AUX_KIND, REAL_TYPE, * $3);			s->set_minmaxeps($4);			s->set_declared(@3.first_line);		};                                                                                                                    aux_bool_ident_list_t:                                          	new_ident_t                                                		{                                                  			const Var_symbol *s;                             			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(AUX_KIND, BOOL_TYPE, * $1);			s->set_declared(@1.first_line);			s->set_minmaxeps(new Min_max_eps(new Number_expr(0.0, ((t_parser_input*)p_in)->globals), new Number_expr(1.0, ((t_parser_input*)p_in)->globals), NULL, ((t_parser_input*)p_in)->globals) );		}                                                  	| aux_bool_ident_list_t ',' new_ident_t                 		{                                                  			const Var_symbol *s;                             			s=(const Var_symbol*)((t_parser_input*)p_in)->globals->symbol_table->create_symbol(AUX_KIND, BOOL_TYPE, * $3);			s->set_declared(@3.first_line);			s->set_minmaxeps(new Min_max_eps(new Number_expr(0.0, ((t_parser_input*)p_in)->globals), new Number_expr(1.0, ((t_parser_input*)p_in)->globals), NULL, ((t_parser_input*)p_in)->globals) );		};/******************************************************************************  * real expressions                                                           *  ******************************************************************************/real_expr_t:	NUM		{			$$ = new Number_expr($1, ((t_parser_input*)p_in)->globals);			$$->set_source_line(@1.first_line);			$$->set_source($$->to_matlab());		}			| parameter_t		{			$1->set_used(@1.first_line);			$$=new Parameter_expr($1, ((t_parser_input*)p_in)->globals);			$$->set_source_line(@1.first_line);			$$->set_source($1->get_name());					}	| REALVARIABLE		{			$1->set_used(@1.first_line);			$$=new Variable_expr($1, ((t_parser_input*)p_in)->globals);			$$->set_source_line(@1.first_line);			$$->set_source($1->get_name());								}	| '(' REAL  logic_expr_t ')'		{                        $$ = new Cast_log2real_expr($3);      			$$->set_source_line(@1.first_line);			$$->set_source(string("(REAL ") + $3->get_source() + string(")"));		}	| real_expr_t '+' real_expr_t		{			$$ = new Plus_expr($1, $3);      			$$->set_source_line(@1.first_line);			$$->set_source($1->get_source() + string(" + ") + $3->get_source());					}	| real_expr_t '-' real_expr_t		{			$$ = new Minus_expr($1, $3);      			$$->set_source_line(@1.first_line);			$$->set_source($1->get_source() + string(" - ") + $3->get_source());		}	| real_expr_t '*' real_expr_t		{			$$ = new Mult_expr($1, $3);      			$$->set_source_line(@1.first_line);			$$->set_source($1->get_source() + string(" * ") + $3->get_source());					}	| real_expr_t '/' real_expr_t		{			$$ = new Div_expr($1, $3);      			$$->set_source_line(@1.first_line);			$$->set_source($1->get_source() + string(" / ") + $3->get_source());					}	| real_expr_t '^' real_expr_t		{			$$ = new Log_expr(new Mult_expr($1, new Exp_expr($3)));      			$$->set_source_line(@1.first_line);			$$->set_source($1->get_source() + string(" ^ ") + $3->get_source());					}	| '('real_expr_t')'		{			$$ = $2;      			$$->set_source_line(@1.first_line);			$$->set_source(string("(") + $2->get_source() + string(")") );		} 	| '-' real_expr_t %prec UNARY 		{			$$ = new Neg_expr($2);      			$$->set_source_line(@1.first_line);			$$->set_source(string("-") + $2->get_source());					}	| COS '(' real_expr_t ')' %prec UNARY		{			$$ = new Cos_expr($3);      			$$->set_source_line(@1.first_line);			$$->set_source(string("cos(") + $3->get_source() + string(")") );					}	| EXP '(' real_expr_t ')' %prec UNARY		{			$$ = new Exp_expr($3);      			$$->set_source_line(@1.first_line);			$$->set_source(string("exp(") + $3->get_source() + string(")") );								}	| SIN '(' real_expr_t ')' %prec UNARY		{			$$ = new Sin_expr($3);      			$$->set_source_line(@1.first_line);			$$->set_source(string("sin(") + $3->get_source() + string(")") );								}	| SQRT '(' real_expr_t ')' %prec UNARY		{			$$ = new Sqrt_expr($3);      			$$->set_source_line(@1.first_line);			$$->set_source(string("sqrt(") + $3->get_source() + string(")") );								}	| LOG '(' real_expr_t ')' %prec UNARY		{			$$ = new Log_expr($3);      			$$->set_source_line(@1.first_line);			$$->set_source(string("log(") + $3->get_source() + string(")") );								};/******************************************************************************  * logic expressions                                                          *  ******************************************************************************/logic_expr_t:	TRUE		{			$$=new Number_expr(new Bool_number(true), ((t_parser_input*)p_in)->globals);      			$$->set_source_line(@1.first_line);			$$->set_source(string("TRUE"));		}	| FALSE		{			$$=new Number_expr(new Bool_number(false), ((t_parser_input*)p_in)->globals);      			$$->set_source_line(@1.first_line);			$$->set_source(string("FALSE"));					}		| BOOLVARIABLE		{			$1->set_used(@1.first_line);			$$=new Variable_expr($1, ((t_parser_input*)p_in)->globals);      			$$->set_source_line(@1.first_line);			$$->set_source($1->get_name());					}	| logic_expr_t '|' logic_expr_t 		{			$$ = new Or_expr($1,$3);      			$$->set_source_line(@1.first_line);			$$->set_source($1->get_source() + string(" | ") + $3->get_source());					}

⌨️ 快捷键说明

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