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

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

?? mqlstate.h

?? 件主要用于幫助計(jì)算機(jī)愛好者學(xué)習(xí)蟻群算法時(shí)做有關(guān)蟻群算法的試驗(yàn)。蟻群算法作為一種優(yōu)秀的新興的算法
?? H
字號:
#ifndef CLASS_MQL_STATE#define CLASS_MQL_STATE#include <string>#include <set>#include <map>#include <vector>#include <stdint.h>#include <FlexLexer.h>#include <ucontext.h>// Forward typedef and declaration		typedef struct ASTNode_t ASTNode;		 class ParserState;class VarTable;enum ASTType {	EMPTY_TYPE = 0, 				INT_TYPE, 				DOUBLE_TYPE, 				NEW_VAR_TYPE, 				REF_VAR_TYPE,				STRING_TYPE, 				AST_TYPE, 				SEP_TYPE, 				FUNC_REF_TYPE,				PRINT_TYPE, 				UNARY_TYPE, 				BIN_TYPE, 				IF_TYPE, 				NEW_VAR_ASSIGN_TYPE, 				LOOP_TYPE, 				BREAK_TYPE, 				CONTINUE_TYPE, 				CONTEXT_TYPE, 				FUNC_DECLARE_TYPE, 				FUNC_CALL_TYPE, 				VOID_TYPE,				RETURN_TYPE, 				DEF_ADT_TYPE,	// Creates ADT type 				ADT_TYPE,		// Actual type structure references				VAR_ADT_TYPE,	// Individual instances 				REF_VAR_ADT_TYPE,				ASSIGN_ADT_TYPE,				ARRAY_TYPE,				REF_VAR_ARRAY_TYPE,				RPC_TYPE,				NATIVE_FUNC_TYPE,				FOR_LOOP_TYPE,				PRINTLN_TYPE			};				#include "Marshal.h"typedef union ASTVal_t {	double 	 					d_val;	int32_t	 					i_val;	string*  					s_val;		//	For native functions (e.g. round, floor)	struct {		int						n_type;		ASTNode*				n_param_1;		ASTNode*				n_param_2;		ASTNode*				n_param_3;			} n_val;		//	For storing variables	struct {		ASTType					v_type;		string*					v_name;		ASTNode*				v_name_ast;				string*					v_name_dot_name;		ASTNode*				v_assign;		ASTType					v_array_type;		const string*			v_adt_name;		//int						v_array_size;		ASTNode*				v_array_size;		ASTNode*				v_access_ast;	} v_val;	//	For binary operations and assign		struct {		int						b_type;		ASTNode*				b_left_node;		ASTNode*				b_right_node;	} b_val;		//	Unary operator, return	struct {		int						u_type;		ASTNode*				u_node;	} u_val;		// Array type	struct {		ASTType					a_type;			const string*			a_adt_name;				vector<ASTNode*>*		a_vector;		VarTable*				a_var_table;	} a_val;		//	Parameter separater type	struct {		vector<ASTNode*>*		p_vector;	} p_val;			// Function operator	struct {		ASTType					f_type;		const string*			f_type_name;		const string*			f_name;		const ASTNode*			f_formal_param;		ASTNode*				f_actual_param;		ASTNode*				f_node;		ASTType					f_array_type;	} f_val;				//	loop operator		struct {		//int						l_type;		ASTNode*				l_eval;		ASTNode*				l_node;	} l_val;		//	for loop operator		struct {		ASTNode*				for_node_1;		ASTNode*				for_node_2;		ASTNode*				for_node_3;		ASTNode*				for_node_4;	} for_val;			//	Adt type	struct {		const string*			adt_type_name;		ASTNode*				adt_param;		map<string, ASTNode*>*	adt_map;	} adt_val;		//	For if statements	struct {		ASTNode*		if_eval;		ASTNode*		if_left_node;		ASTNode*		if_right_node;					} if_val;		struct {		ASTNode*		rpc_dest;		string*			rpc_func_name;		ASTNode*		rpc_param;	} rpc_val;} ASTVal;typedef struct ASTNode_t {	ASTType		type;	ASTVal		val;};class ParserState;class VarTable{private:	ParserState*						v_ps;		map<const string, ASTNode*> 		v_map;	vector<ASTNode*> 					v_stack_ast;	vector<string*> 					v_stack_string;	vector<vector<ASTNode*>*> 			v_stack_vector;	vector<map<string, ASTNode*>*> 		v_stack_map;			VarTable* prev_var_table;	// Pointer to a prev var table that 								// contains the global variables/declarations			int remove_var_map_context();	int remove_AST_context();	int remove_string_context();	int remove_vector_context();	int remove_map_context();		static bool local_exists(const map<const string, ASTNode*>* in_map, 		const string& in_string);		static int local_lookup(const map<const string, ASTNode*>* in_map, 		const string& in_string, ASTNode** in_type);	ASTNode* create_basic_type(const ASTType in_type);	public:	VarTable(ParserState* in_ps, VarTable* in_prev) 		: v_ps(in_ps), prev_var_table(in_prev) {			}		~VarTable() {		remove_var_map_context();		remove_AST_context();		remove_string_context();		remove_vector_context();		remove_map_context();			}		int local_remove(const string& in_string);	int lookup(const string& in_string, ASTNode** in_type);		int insert(const string& in_string, ASTNode* in_type);		int update(const string& in_string, const ASTNode* in_var);		ASTNode* new_stack_ast();	string* new_stack_string();	vector<ASTNode*>* new_stack_vector();	map<string, ASTNode*>* new_stack_map();			ASTNode* ASTCreate(const ASTType in_type, 		const string* adt_name, const ASTType array_type, int array_size);				int updateADT(ASTNode* retVar, const ASTNode* in_var);};#include "MQL.tab.hpp"class MyFlexLexer : public yyFlexLexer {public:		ParserState* param;	int scan(ParserState* in_state) {		param = in_state; 		return yylex(); 	}};extern ASTNode* mk_empty(ParserState* in_state);extern ASTNode* mk_break(ParserState* in_state);extern ASTNode* mk_continue(ParserState* in_state);class ParserInputBuffer {private:	char* buf;	u_int bufSize;	u_int bufCounter;public:	ParserInputBuffer() : buf(NULL), bufSize(0), bufCounter(0) {}	~ParserInputBuffer() {		if (buf) {			delete_buffer();		}	}		int create_buffer(u_int size) {		if (buf) {			fprintf(stderr, "Buffer already exists\n");			return -1;			}		buf = (char*)malloc(sizeof(char) * size);		if (!buf) {			return -1;		}		bufSize = size;		return 0;			}		int delete_buffer() {		if (!buf) {			fprintf(stderr, "No buffer has been created\n");			return -1;			}		free(buf);		// Free memory		buf = NULL;		bufSize = 0;	// Reset size and counter		bufCounter = 0;		return 0;	}		char* get_raw_buf() {		return buf;		}		int get_buf(char** out_buf, u_int size) {				*out_buf = buf + bufCounter;		if (size > (bufSize - bufCounter)) {			int retVal = bufSize - bufCounter;			bufCounter = bufSize;			return retVal; 		}		bufCounter += size;		return size;	}		u_int get_buf_size() {		return bufSize;		}	};class Query;class DSLRecvQuery;class MeridianProcess;enum PSState {PS_DONE, PS_READY, PS_RUNNING, PS_BLOCKED};class ParserState {friend class VarTable;private:	YYSTYPE* 			parse_result;		MyFlexLexer* 		lexer;	ASTNode* 			empty_node;	ASTNode* 			break_node;	ASTNode* 			continue_node;	ASTNode* 			start_node;		string 				ret_string;		//	Stores the special $RETURN$ symbol		vector<VarTable*> 	var_table;	string				func_string;	ASTNode*			param_node;	NodeIdent			caller_id;	int					evalCount;	PSState				state;	void*				context_stack;	ucontext_t			parse_context;	//ASTNode* 			rpc_return;	ASTNode*			query_return;	DSLRecvQuery*		queryPtr;	MeridianProcess*	meridProcess;	ASTNode*			rpc_recv;	int 				ASTAllocationCount;				void delete_map(map<string, ASTNode*>* in_map) 		{	delete in_map; }	void delete_vector(vector<ASTNode*>* in_vect) 		{	delete in_vect; }	void delete_string(string* in_str) 					{	delete in_str; }	void delete_ast(ASTNode* in_ast)  {		ASTAllocationCount--;		free(in_ast);		}	// This functions are the only ones that ParserState can return NULL	// They should not be called directly except by the VarTable and the	// return value should be checked 		map<string, ASTNode*>* new_map() {		map<string, ASTNode*>* retMap = new map<string, ASTNode*>();		return retMap;	}		vector<ASTNode*>* new_vector() {		vector<ASTNode*>* retVect = new vector<ASTNode*>();		return retVect;	}		string* new_string() {		string* retStr = new string();		return retStr;	}	#define MAX_AST_PER_STACK	100000		ASTNode* new_ast() {				if (++ASTAllocationCount > MAX_AST_PER_STACK) {			fprintf(stderr, "Maximum allocation count reached\n");			return NULL;		}		ASTNode* retNode = (ASTNode*)malloc(sizeof(ASTNode));		return retNode;	}		public:		void set_parse_result(YYSTYPE* in_result) 	{ parse_result = in_result; }	YYSTYPE* get_parse_result() 				{ return parse_result; }	MyFlexLexer* get_lex() 						{ return lexer; }	VarTable* get_var_table() 					{ return var_table.back(); }		ASTNode* empty_token()						{ return empty_node; }	ASTNode* break_token()						{ return break_node; }	ASTNode* continue_token()					{ return continue_node; }	const string* return_string()				{ return &ret_string; }		//void set_call_id(const NodeIdent& in_call)	{ caller_id = in_call; }	//NodeIdent get_call_id() 					{ return caller_id; }		void set_parser_state(PSState in_state)		{ state = in_state; }	PSState parser_state() const				{ return state; }	ParserInputBuffer	input_buffer;	//ucontext_t 			save_context;	int save_context() {		if (context_stack != NULL) {			return -1;			}#define FIBER_STACK	(256 * 1024)						if ((context_stack = malloc(FIBER_STACK)) == NULL) {			return -1;			}				// Get the current execution context		getcontext(&(parse_context));					// Modify the context to a new stack		parse_context.uc_link = 0;				parse_context.uc_stack.ss_sp = context_stack;		parse_context.uc_stack.ss_size = FIBER_STACK;		parse_context.uc_stack.ss_flags = 0;		return 0;	}		ucontext_t* get_context() {		if (context_stack == NULL) {			return NULL;			}		return &parse_context;	}		void set_param(ASTNode* in_node) {		if (in_node != NULL) {			param_node = in_node;			}	}		ASTNode* get_param() {		return param_node;		}		void set_func_string(const char* in_string) {		if (in_string != NULL) {			func_string = in_string;		}	}		const string* get_func_string() {		return &func_string;	}				int new_var_table(VarTable** old_table) {		VarTable* new_table = NULL;		if (var_table.empty()) {			*old_table = NULL;			// Creating global context			new_table = new VarTable(this, NULL);		} else {			*old_table = var_table.back();			// Keeping global context			new_table = new VarTable(this, var_table[0]);		}		if (new_table == NULL) {			return -1;			}		var_table.push_back(new_table);		return 0;	}		int new_context() {		if (var_table.empty()) {			fprintf(stderr, "Cannot create new "				"context without previous var table (parser error)");			return -1;		} 		// Keeping previous context		VarTable* new_table = new VarTable(this, var_table.back());		if (new_table == NULL) {			return -1;			}		var_table.push_back(new_table);		return 0;				}		int remove_context() {		return remove_var_table();		}		int remove_var_table() {		if (var_table.empty()) {			return -1;		}		VarTable* oldest = var_table.back();		var_table.pop_back();		delete oldest;		return 0;	}		void set_start(ASTNode* in_node) {		if (in_node) {	// Just in case			start_node = in_node;		}	}		ASTNode* get_start() {		return start_node;		}		void allocateEvalCount(int in_eval) {		evalCount = in_eval;	}		void decrementEvalCount() {		evalCount--;		}		int getEvalCount() {		return evalCount;		}#if 0		void setRPCReturn(ASTNode* in_rpc) {		if (in_rpc) {			rpc_return = in_rpc;			}	}		ASTNode* getRPCReturn() {		return rpc_return;		}#endif	void setQueryReturn(ASTNode* in_ast) {		if (in_ast) {			query_return = in_ast;			}	}		ASTNode* getQueryReturn() {		return query_return;		}			void setRPCRecv(ASTNode* in_rpc) {		if (in_rpc) {			rpc_recv = in_rpc;			}	}		ASTNode* getRPCRecv() {		return rpc_recv;		}			void setQuery(DSLRecvQuery* in_query) {		queryPtr = in_query;	}		DSLRecvQuery* getQuery() {		return queryPtr;		}		void setMeridProcess(MeridianProcess* in_process) {		meridProcess = in_process;		}		MeridianProcess* getMeridProcess() {		return meridProcess;		}			ParserState() : parse_result(NULL), evalCount(0),  			state(PS_READY), context_stack(NULL), queryPtr(NULL), 			meridProcess(NULL), ASTAllocationCount(0) {				//	This symbol cannot ever actuall be used by the user,		//	so there can not be a collision		ret_string = "$RETURN_VALUE$";		lexer = new MyFlexLexer();		//	VarTable must be created before mk_empty is called		VarTable* temp;		new_var_table(&temp);		empty_node = mk_empty(this);		start_node = empty_node;		query_return = empty_node;		rpc_recv = empty_node;		set_param(empty_node);		break_node = mk_break(this);		continue_node = mk_continue(this);		caller_id.addr = 0; caller_id.port = 0;	}		~ParserState(){		if (lexer) delete lexer;		while (remove_var_table() != -1);		if (context_stack) free(context_stack);	}};#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区不卡视频| 国产成人综合亚洲网站| 26uuu久久天堂性欧美| 91蜜桃在线免费视频| 麻豆精品精品国产自在97香蕉| 国产欧美日韩中文久久| 欧美一区二区三区免费大片| 92国产精品观看| 国产一区二区在线观看免费| 亚洲午夜久久久久久久久久久| 精品免费视频.| 欧美伊人精品成人久久综合97| 粉嫩绯色av一区二区在线观看 | 成人性生交大片免费看视频在线| 亚洲成人动漫av| 国产精品传媒视频| 国产亚洲精品免费| 欧美不卡视频一区| 欧美美女直播网站| 一本一道综合狠狠老| 国产suv精品一区二区883| 日韩激情一区二区| 亚洲高清免费视频| 亚洲美女区一区| 国产精品色哟哟| www亚洲一区| 欧美大白屁股肥臀xxxxxx| 欧美日本在线播放| 欧美色成人综合| 在线精品视频小说1| 91麻豆精品在线观看| 成人高清视频免费观看| 国产成人免费视频一区| 国产精品一区在线| 国产专区欧美精品| 国产揄拍国内精品对白| 精品中文字幕一区二区小辣椒| 三级欧美韩日大片在线看| 亚洲网友自拍偷拍| 亚洲国产精品自拍| 天天色天天操综合| 亚洲va韩国va欧美va| 亚洲成人激情自拍| 日韩精品视频网站| 另类小说图片综合网| 老司机精品视频在线| 久久疯狂做爰流白浆xx| 国产在线精品一区二区三区不卡 | 一区二区三区国产精华| 亚洲精品视频一区| 亚洲一区国产视频| 舔着乳尖日韩一区| 美女诱惑一区二区| 国产呦萝稀缺另类资源| 国产一区二区三区免费播放| 国产成人亚洲综合色影视| 成人国产精品视频| 91国偷自产一区二区三区成为亚洲经典| 日本精品一区二区三区四区的功能| 99久久er热在这里只有精品15 | 国产成人aaa| 91亚洲精品久久久蜜桃| 欧洲av一区二区嗯嗯嗯啊| 制服丝袜亚洲网站| 久久午夜老司机| 亚洲视频在线一区观看| 午夜不卡av在线| 国模娜娜一区二区三区| 99在线热播精品免费| 欧美网站大全在线观看| 欧美电视剧免费全集观看| 国产精品乱码久久久久久| 一区二区三区免费看视频| 婷婷综合久久一区二区三区| 国内精品免费**视频| 色综合久久88色综合天天免费| 欧美日韩国产高清一区二区三区| 精品国产一区二区精华| 国产精品久久久久aaaa| 午夜影视日本亚洲欧洲精品| 国产一区二区三区四区五区入口 | 久久综合五月天婷婷伊人| 国产精品乱码一区二区三区软件 | 国产精品国产馆在线真实露脸| 亚洲欧美色一区| 蜜桃久久久久久久| 菠萝蜜视频在线观看一区| 91精品欧美一区二区三区综合在| 久久亚洲精精品中文字幕早川悠里| 亚洲视频在线一区| 国内精品久久久久影院一蜜桃| 色综合久久天天| 久久午夜电影网| 丝袜美腿高跟呻吟高潮一区| 福利91精品一区二区三区| 欧美肥妇free| 亚洲精品乱码久久久久久黑人 | 韩国av一区二区三区在线观看| 91免费看`日韩一区二区| 精品久久一二三区| 亚洲成人你懂的| 99久久免费视频.com| 日韩欧美一级二级三级久久久| 亚洲免费观看高清完整版在线观看熊| 久久99精品久久久久久久久久久久| 色激情天天射综合网| 国产偷v国产偷v亚洲高清| 日韩中文欧美在线| 色哟哟在线观看一区二区三区| 久久久99精品久久| 免费精品视频在线| 欧美日韩精品欧美日韩精品一综合| 国产精品亲子伦对白| 精品亚洲aⅴ乱码一区二区三区| 在线观看91视频| 国产一区二区三区免费在线观看| 欧美日韩国产综合视频在线观看 | 337p粉嫩大胆噜噜噜噜噜91av| 亚洲已满18点击进入久久| 国产成人精品一区二区三区网站观看| 在线播放欧美女士性生活| 亚洲精品一卡二卡| 91同城在线观看| 中文字幕在线不卡一区二区三区| 黑人巨大精品欧美一区| 日韩欧美成人一区二区| 日本中文字幕一区二区有限公司| 欧美制服丝袜第一页| 亚洲视频一区二区免费在线观看| 大桥未久av一区二区三区中文| 久久蜜桃一区二区| 九色综合国产一区二区三区| 日韩午夜av一区| 美女网站一区二区| 日韩美女一区二区三区四区| 六月丁香婷婷久久| 精品美女在线播放| 韩国av一区二区三区四区 | 久久婷婷成人综合色| 精品在线一区二区| 久久嫩草精品久久久精品| 国产露脸91国语对白| 久久影院视频免费| 高清久久久久久| 国产精品丝袜91| 91网站视频在线观看| 亚洲黄色免费电影| 欧美日韩精品免费观看视频| 青青草视频一区| 欧美xingq一区二区| 国产一区二区三区最好精华液| 欧美激情一区在线观看| 成人免费观看视频| 亚洲精品免费在线观看| 欧美午夜精品电影| 日本不卡一二三| 欧美精品一区二区蜜臀亚洲| 国产不卡视频一区二区三区| 亚洲欧洲日产国产综合网| 日本道在线观看一区二区| 日韩国产欧美三级| 久久久青草青青国产亚洲免观| 播五月开心婷婷综合| 亚洲制服丝袜在线| 精品久久一区二区三区| 成人av网站在线| 亚洲成a人片综合在线| 精品久久久久一区| 9人人澡人人爽人人精品| 亚洲风情在线资源站| 日韩免费观看2025年上映的电影| 国产精品 欧美精品| 亚洲最大的成人av| 精品国内片67194| 91网页版在线| 麻豆精品久久精品色综合| 亚洲欧洲精品一区二区三区不卡| 91成人免费在线| 国产一本一道久久香蕉| 亚洲免费在线播放| 精品毛片乱码1区2区3区| 99精品视频一区| 麻豆精品精品国产自在97香蕉| 中文字幕一区二区三区蜜月 | 国产欧美一区二区三区在线看蜜臀 | 麻豆传媒一区二区三区| 国产精品久久久久久久午夜片| 欧美性大战久久| 国产成人免费视频精品含羞草妖精| 亚洲黄一区二区三区| 久久亚洲综合色一区二区三区| 欧美在线高清视频| 国产高清精品网站| 午夜精品一区在线观看| 国产精品久久一卡二卡| 日韩欧美中文一区二区| 色视频欧美一区二区三区| 国产精品一区在线| 麻豆一区二区三| 一级日本不卡的影视|