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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? variables.cpp

?? Full support for extended regular expressions (those with intersection and complement); Support for
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

#include <stdio.h>
#include "variables.h"
#include "dolphin.h"
#include "process.h"
#include "stl.h"
using namespace std;
using namespace Whale;

void report_wrong_parameters(ostream &os, const char *variable, NonterminalOptionStatement *st, const char *additional_text=NULL);
void report_ignored_parameters(ostream &os, const char *variable, NonterminalOptionStatement *st, const char *additional_text=NULL);
bool assign_value_to_id_or_string_variable(char *&variable, char *variable_name);
bool assign_value_to_bool_variable(bool &variable, char *variable_name);
bool assign_value_to_semibool_variable(int &variable, char *variable_name, int max_value, int true_value);
bool assign_value_to_int_variable(int &variable, char *variable_name);
bool assign_value_to_code_variable(char *&variable, char *variable_name);
bool process_parametrized_string(char *&variable, char *variable_name, char *parameters);

Variables::Variables() :
	my_new_variable(database, "my_new_variable", TRUE_AND_FALSE_ALLOWED),
	another_variable(database, "another_variable", STRING_ALLOWED)
{
	start_conditions_enabled=true;
	compress_action_vectors=false;
	
	generate_fixed_length_lookahead_support=false;
	generate_arbitrary_lookahead_support=false;
	generate_eof_lookahead_support=false;
	
	generate_table_of_actions=false;
	using_layer2=true;
}

bool variable_exists(char *s)
{
	static std::set<char *, NullTerminatedStringCompare> database;
	if(!database.size())
	{
		database.insert("alphabet_cardinality");
		database.insert("unicode");
		database.insert("internal_char_type");
		database.insert("internal_string_type");
		
		database.insert("whale");
		database.insert("whale_file");
		database.insert("whale_namespace");
		database.insert("language");
		database.insert("eat_character_upon_error");
		database.insert("dolphin_class");
		database.insert("generate_verbose_prints");
		database.insert("generate_sanity_checks");
		database.insert("store_lexeme_in_string");
		database.insert("append_data_member");
		database.insert("case_insensitive");
		database.insert("line_directives");
		database.insert("allow_inclusion_cycle_between_whale_and_dolphin");
		
		database.insert("dump_nfa_to_file");
		database.insert("dump_nfas_for_expressions");
		database.insert("dump_nfas_for_start_conditions");
		database.insert("dump_dfas_for_start_conditions");
		database.insert("dump_dfa_to_file");
		
		database.insert("compress_tables");
		database.insert("table_compression_exception_width");
		
		database.insert("input_stream_class");
		database.insert("input_character_class");
		database.insert("how_to_get_actual_character");
		database.insert("how_to_check_eof");
		database.insert("how_to_check_stream_error");
		database.insert("how_to_get_character_from_stream");
		database.insert("how_to_return_token");
		database.insert("analyzer_state_type");
		database.insert("get_token_function_return_value");
		database.insert("get_token_function_parameters");
		
		database.insert("code_in_h_before_all");
		database.insert("code_in_h");
		database.insert("code_in_h_after_all");
		database.insert("code_in_cpp_before_all");
		database.insert("code_in_cpp");
		database.insert("code_in_cpp_after_all");
		database.insert("code_in_class_before_all");
		database.insert("code_in_class");
		database.insert("code_in_class_after_all");
		database.insert("code_in_constructor");
	}
	return database.count(s);
}

bool assign_values_to_variables_stage_zero()
{
	bool flag=true;
	
	if(data.assignments.count("unicode"))
	{
		flag=flag & assign_value_to_bool_variable(data.variables.unicode,
			"unicode");
	}
	else
		data.variables.unicode=false;

	if(data.assignments.count("alphabet_cardinality"))
	{
		flag=flag & assign_value_to_int_variable(data.variables.alphabet_cardinality,
			"alphabet_cardinality");
	}
	else
		data.variables.alphabet_cardinality=(data.variables.unicode ? 4096 /* those who want more should specify it themselves */ : 256);
	
	return flag;
}

bool assign_values_to_variables_stage_one()
{
	// We have the following sources to consider (arranged from the highest
	// priority to the lowest):
	// i. Command line options (not implemented yet)
	// ii. Assignment statements within the source file.
	// iii. Default values.
	
	bool flag=true;
	
	if(data.assignments.count("internal_char_type"))
		flag=flag & assign_value_to_id_or_string_variable(data.variables.internal_char_type,
			"internal_char_type");
	else
		data.variables.internal_char_type=const_cast<char *>(data.variables.unicode ? "wchar_t" : "char");
	
	data.variables.internal_char_type_is_char=(strcmp(data.variables.internal_char_type, "char")==0);
	data.variables.internal_char_type_is_wchar_t=(strcmp(data.variables.internal_char_type, "wchar_t")==0);
	
	if(data.assignments.count("internal_string_type"))
		flag=flag & assign_value_to_id_or_string_variable(data.variables.internal_string_type,
			"internal_string_type");
	else
	{
		if(data.variables.internal_char_type_is_char)
			data.variables.internal_string_type="std::string";
		else if(data.variables.internal_char_type_is_wchar_t)
			data.variables.internal_string_type="std::wstring";
		else
		{
			data.variables.internal_string_type=new char[30+strlen(data.variables.internal_char_type)];
			sprintf(data.variables.internal_string_type, "std::basic_string<%s>", data.variables.internal_char_type);
		}
	}
	
	if(data.assignments.count("whale"))
	{
		AssignmentData &ad=data.assignments["whale"];
		int n=ad.values.size();
		
		if(n==1 && ad.values[0].second==AssignmentData::VALUE_TRUE)
		{
			data.variables.using_whale=true;
			data.variables.whale_emulation_mode=false;
		}
		else if(n==1 && ad.values[0].second==AssignmentData::VALUE_FALSE)
		{
			data.variables.using_whale=false;
			data.variables.whale_emulation_mode=false;
		}
		else if(n==1 && !strcmp(ad.values[0].first, "emulate"))
		{
			data.variables.using_whale=true;
			data.variables.whale_emulation_mode=true;
		}
		else
		{
			report_wrong_parameters(cout, "whale", ad.declaration,
				"expecting 'true', 'false' or 'emulate'");
			flag=false;
		}
	}
	else
	{
		data.variables.using_whale=true;
		data.variables.whale_emulation_mode=false;
	}
	
	if(data.assignments.count("whale_file"))
	{
		if(data.variables.using_whale)
			flag=flag & assign_value_to_id_or_string_variable(data.variables.whale_file,
				"whale_file");
		else
			report_ignored_parameters(cout, "whale_file",
				data.assignments["whale_file"].declaration);
	}
	else
		data.variables.whale_file="parser.h";
	
	if(data.assignments.count("whale_namespace"))
	{
		if(data.variables.using_whale)
			flag=flag & assign_value_to_id_or_string_variable(data.variables.whale_namespace,
				"whale_namespace");
		else
			report_ignored_parameters(cout, "whale_namespace",
				data.assignments["whale_namespace"].declaration);
	}
	else
		data.variables.whale_namespace="Whale";
	
	if(data.assignments.count("language"))
	{
		AssignmentData &ad=data.assignments["language"];
		int n=ad.values.size();
		
		if(n==1 && !strcmp(ad.values[0].first, "cpp"))
			data.variables.output_language=Variables::LANGUAGE_CPP;
		else if(n==1 && !strcmp(ad.values[0].first, "vintage_cpp"))
			data.variables.output_language=Variables::LANGUAGE_VINTAGE_CPP;
		else
		{
			report_wrong_parameters(cout, "language", ad.declaration,
				"expecting 'cpp' or 'vintage_cpp'");
			flag=false;
		}
	}
	else
		data.variables.output_language=Variables::LANGUAGE_CPP;
	
	if(data.assignments.count("dolphin_class"))
		flag=flag & assign_value_to_id_or_string_variable(data.variables.dolphin_class_name,
			"dolphin_class");
	else
		data.variables.dolphin_class_name="DolphinLexicalAnalyzer";
	
	if(data.assignments.count("get_token_function_return_value"))
		flag=flag & assign_value_to_id_or_string_variable(data.variables.get_token_function_return_value,
			"get_token_function_return_value");
	else
	{
		if(data.variables.using_whale)
		{
			string str=string(data.variables.whale_namespace)+string("::Terminal *");
			data.variables.get_token_function_return_value=strdup(str.c_str());
		}
		else
			data.variables.get_token_function_return_value="int";
	}
	
	if(data.assignments.count("get_token_function_parameters"))
	{
		flag=flag & assign_value_to_id_or_string_variable(data.variables.get_token_function_parameters,
			"get_token_function_parameters");
		if(!strcmp(data.variables.get_token_function_parameters, "void"))
			data.variables.get_token_function_parameters="";
	}
	else
		data.variables.get_token_function_parameters="";
	
	if(data.assignments.count("generate_verbose_prints"))
		flag=flag & assign_value_to_bool_variable(data.variables.generate_verbose_prints,
			"generate_verbose_prints");
	else
		data.variables.generate_verbose_prints=false;
	
	if(data.assignments.count("generate_sanity_checks"))
		flag=flag & assign_value_to_bool_variable(data.variables.generate_sanity_checks,
			"generate_sanity_checks");
	else
		data.variables.generate_sanity_checks=false;
	
	if(data.assignments.count("eat_character_upon_error"))
		flag=flag & assign_value_to_bool_variable(data.variables.eat_one_character_upon_lexical_error,
			"eat_character_upon_error");
	else
		data.variables.eat_one_character_upon_lexical_error=true;
	
	if(data.assignments.count("append_data_member"))
		flag=flag & assign_value_to_bool_variable(data.variables.append_data_member,
			"append_data_member");
	else
		data.variables.append_data_member=false;
	
	if(data.assignments.count("case_insensitive"))
		flag=flag & assign_value_to_bool_variable(data.variables.case_insensitive,
			"case_insensitive");
	else
		data.variables.case_insensitive=false;
	
	if(data.assignments.count("compress_tables"))
		flag=flag & assign_value_to_bool_variable(data.variables.compress_tables,
			"compress_tables");
	else
		data.variables.compress_tables=true;
	
	if(data.assignments.count("line_directives"))
		flag=flag & assign_value_to_bool_variable(data.variables.line_directives,
			"line_directives");
	else
		data.variables.line_directives=false;
	
	if(data.assignments.count("allow_inclusion_cycle_between_whale_and_dolphin"))
		flag=flag & assign_value_to_bool_variable(data.variables.allow_inclusion_cycle_between_whale_and_dolphin,
			"allow_inclusion_cycle_between_whale_and_dolphin");
	else
		data.variables.allow_inclusion_cycle_between_whale_and_dolphin=true;
	
	if(data.assignments.count("dump_nfa_to_file"))
		flag=flag & assign_value_to_semibool_variable(data.variables.dump_nfa_to_file,
			"dump_nfa_to_file", 2, 2);
	else
		data.variables.dump_nfa_to_file=0;
	
	if(data.assignments.count("dump_dfa_to_file"))
		flag=flag & assign_value_to_semibool_variable(data.variables.dump_dfa_to_file,
			"dump_dfa_to_file", 2, 2);
	else
		data.variables.dump_dfa_to_file=0;
	
	if(data.assignments.count("dump_nfas_for_expressions"))
		flag=flag & assign_value_to_bool_variable(data.variables.dump_nfas_for_expressions,
			"dump_nfas_for_expressions");
	else
		data.variables.dump_nfas_for_expressions=false;
	
	if(data.assignments.count("dump_nfas_for_start_conditions"))
		flag=flag & assign_value_to_bool_variable(data.variables.dump_nfas_for_start_conditions,
			"dump_nfas_for_start_conditions");
	else
		data.variables.dump_nfas_for_start_conditions=false;
	
	if(data.assignments.count("dump_dfas_for_start_conditions"))
		flag=flag & assign_value_to_bool_variable(data.variables.dump_dfas_for_start_conditions,
			"dump_dfas_for_start_conditions");
	else
		data.variables.dump_dfas_for_start_conditions=false;

	if(data.assignments.count("table_compression_exception_width"))
	{
		flag=flag & assign_value_to_int_variable(data.variables.table_compression_exception_width,
			"table_compression_exception_width");
	}
	else
		data.variables.table_compression_exception_width=1;
	
	if(data.assignments.count("store_lexeme_in_string"))
		flag=flag & assign_value_to_bool_variable(data.variables.store_lexeme_in_string,
			"store_lexeme_in_string");
	else
	{
		if(data.variables.append_data_member)
			data.variables.store_lexeme_in_string=true;
		else
			data.variables.store_lexeme_in_string=false;
	}
	
	if(data.variables.append_data_member && !data.variables.store_lexeme_in_string)
	{
		cout << "Warning: append_data_member=true together with "
			"store_lexeme_in_string=false can potentially lead "
			"to quadratic time complexity.\n";
	//	cout << "The current version of Dolphin requires "
	//		"store_lexeme_in_string to be true if "
	//		"append_data_member=true.\n";
	//	flag=false;
	}
	
	if(data.assignments.count("input_stream_class"))
		flag=flag & assign_value_to_id_or_string_variable(data.variables.input_stream_class,
			"input_stream_class");
	else
	{
		if(data.variables.internal_char_type_is_char)
			data.variables.input_stream_class="std::istream";
		else if(data.variables.internal_char_type_is_wchar_t)
			data.variables.input_stream_class="std::wistream";
		else
		{
			data.variables.input_stream_class=new char[30+strlen(data.variables.internal_char_type)];
			sprintf(data.variables.input_stream_class, "std::basic_ifstream<%s>", data.variables.internal_char_type);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产秦先生| 精品国产髙清在线看国产毛片| 亚洲网友自拍偷拍| 日韩精品中文字幕一区二区三区 | 亚洲va国产va欧美va观看| 久久影院电视剧免费观看| 91在线观看高清| 国产乱子伦视频一区二区三区 | 怡红院av一区二区三区| 久久久无码精品亚洲日韩按摩| 欧美三级资源在线| 成人h动漫精品一区二| 久久99精品国产麻豆婷婷| 亚洲成av人片在线| 亚洲精品成a人| 中文字幕制服丝袜成人av| 精品国产凹凸成av人网站| 欧美日韩激情一区二区三区| 91原创在线视频| 懂色av一区二区在线播放| 美脚の诱脚舐め脚责91 | 国产成人av一区二区三区在线| 国产精品拍天天在线| 欧美日韩高清一区二区| 99久久99久久久精品齐齐 | 欧美午夜寂寞影院| 99九九99九九九视频精品| 国产电影一区二区三区| 美日韩黄色大片| 日本中文字幕不卡| 亚洲成人av电影在线| 亚洲午夜在线电影| 亚洲免费观看高清在线观看| 国产精品丝袜在线| 中文字幕欧美日本乱码一线二线| 久久久精品影视| 久久婷婷久久一区二区三区| 日韩精品最新网址| 欧美精品一区二区三区在线播放| 日韩欧美电影一区| 日韩午夜激情电影| 日韩欧美黄色影院| 精品国产凹凸成av人导航| 精品国产乱码久久久久久浪潮| 欧美哺乳videos| 日韩欧美亚洲国产精品字幕久久久 | 欧美色涩在线第一页| 在线观看精品一区| 欧美中文字幕一区二区三区亚洲| 色综合色狠狠综合色| 色婷婷国产精品| 欧美性受xxxx| 欧美色视频一区| 日韩欧美中文字幕制服| 日韩免费高清av| 国产亚洲va综合人人澡精品| 国产精品美女久久久久久久网站| 亚洲天堂成人在线观看| 亚洲在线成人精品| 日韩av一级电影| 国产一区二区影院| 成人av在线网| 欧美艳星brazzers| 欧洲av一区二区嗯嗯嗯啊| 欧美最猛性xxxxx直播| 欧美日韩情趣电影| 日韩一区二区三区视频在线| 久久一区二区视频| 中文字幕在线免费不卡| 亚洲成人精品在线观看| 麻豆高清免费国产一区| 国产精品综合二区| 在线观看亚洲专区| 日韩欧美自拍偷拍| 亚洲天堂免费在线观看视频| 亚洲第四色夜色| 久久99国产精品免费网站| 白白色 亚洲乱淫| 欧美日本国产视频| 26uuu亚洲综合色欧美| 亚洲激情男女视频| 激情欧美日韩一区二区| 色综合久久天天| 日韩一区二区三区在线| 国产精品久久久一区麻豆最新章节| 一区二区三区 在线观看视频| 日本中文字幕不卡| 99国产欧美另类久久久精品| 日韩一区二区三区av| 国产精品久久久久影院亚瑟| 日韩电影在线一区二区| 成人免费观看男女羞羞视频| 678五月天丁香亚洲综合网| 国产视频一区二区在线| 久久久久99精品国产片| 中文一区二区在线观看| 亚洲va欧美va人人爽午夜| 国产一区视频导航| 欧美亚洲日本一区| 中文字幕巨乱亚洲| 日产精品久久久久久久性色| 97久久超碰国产精品| 精品久久久三级丝袜| 一区二区三区在线视频播放| 国模少妇一区二区三区| 欧美日韩精品高清| 国产精品乱子久久久久| 久久超碰97中文字幕| 精品视频在线免费观看| 国产精品久久久久一区二区三区共| 免费一级片91| 91麻豆免费在线观看| 久久精品人人做| 视频一区视频二区中文字幕| 99免费精品视频| 久久精品一区四区| 蜜臀av亚洲一区中文字幕| 欧美性受xxxx黑人xyx| 亚洲欧美日韩电影| 国产91精品露脸国语对白| 日韩精品一区在线观看| 免费成人你懂的| 欧美日本一道本| 亚洲成人精品一区二区| 一道本成人在线| 亚洲男同性恋视频| k8久久久一区二区三区| 国产精品午夜免费| 成人网页在线观看| 中文字幕高清一区| 国产91精品露脸国语对白| 久久久久久免费毛片精品| 久草热8精品视频在线观看| 日韩精品一区二区三区在线观看| 五月天亚洲婷婷| 777午夜精品视频在线播放| 亚洲mv大片欧洲mv大片精品| 欧美美女一区二区在线观看| 亚洲国产日韩精品| 欧美亚洲一区二区在线| 午夜精品久久久久久久久久| 欧美日韩电影在线播放| 亚洲大片在线观看| 欧美一级xxx| 国产在线视频精品一区| 久久久久亚洲蜜桃| 成人免费视频一区二区| 亚洲色欲色欲www| 欧美怡红院视频| 偷偷要91色婷婷| 精品国产凹凸成av人导航| 国产伦精品一区二区三区免费迷 | 亚洲成人精品影院| 51午夜精品国产| 久久97超碰色| 亚洲国产精品t66y| 色吧成人激情小说| 香蕉乱码成人久久天堂爱免费| 91精品麻豆日日躁夜夜躁| 久久精品国产免费| 国产午夜精品福利| 在线日韩一区二区| 欧美a级理论片| 国产日韩欧美综合在线| 91色九色蝌蚪| 日本伊人色综合网| 国产丝袜美腿一区二区三区| 99国产精品一区| 日韩精品免费视频人成| 欧美国产日本韩| 在线观看免费亚洲| 精品在线观看免费| 国产精品情趣视频| 欧美日韩的一区二区| 国产成人免费av在线| 亚洲超丰满肉感bbw| 欧美电视剧在线看免费| 成人久久18免费网站麻豆| 午夜久久电影网| 久久只精品国产| 91蜜桃婷婷狠狠久久综合9色| 日韩国产高清影视| 国产日本亚洲高清| 精品视频免费看| 成人国产电影网| 青青草成人在线观看| 亚洲天天做日日做天天谢日日欢| 91精品国产品国语在线不卡| 成人黄色小视频在线观看| 美女爽到高潮91| 亚洲一区欧美一区| 国产欧美日韩在线看| 91精品国产色综合久久| 91麻豆免费观看| 风间由美性色一区二区三区| 日韩精品欧美精品| 亚洲激情五月婷婷| 国产农村妇女精品| 91精品国产色综合久久不卡蜜臀 | 色88888久久久久久影院野外|