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

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

?? lookahead.cpp

?? Full support for extended regular expressions (those with intersection and complement); Support for
?? CPP
字號:

#include "lookahead.h"
#include "dolphin.h"
using namespace std;
using namespace Whale;

bool process_lookaheads()
{
	bool flag=true;
	
	for(int i=0; i<data.recognized_expressions.size(); i++)
	{
		RecognizedExpressionData &re=data.recognized_expressions[i];
		
		if(re.lookahead)
		{
			re.lookahead_length=expression_length(re.lookahead);
			
			if(re.lookahead_length>=0)
			{
				data.variables.generate_fixed_length_lookahead_support=true;
				
				if(re.lookahead_length==0)
					cout << "Warning: zero-length lookahead will have no effect (somewhere - write me!).\n";
			}
			else if(re.lookahead_length==-1)
			{
				data.variables.generate_arbitrary_lookahead_support=true;
				
			//	cout << "Support for arbitrary-length lookahead is not yet available.\n";
			//	flag=false;
				
			//	vector<Terminal *> locations;
			//	for(int j=0; j<re.action_numbers.size(); j++)
			//		locations.push_back(data.actions[re.action_numbers[j]]);
			//	cout << "Lookahead expression at ";
			//	print_terminal_location(re.lookahead);
			}
			else
				assert(false);
		}
		
		if(re.lookahead_eof!=0)
			data.variables.generate_eof_lookahead_support=true;
	}
	
	data.variables.generate_table_of_actions|=
		data.variables.generate_fixed_length_lookahead_support |
		data.variables.generate_arbitrary_lookahead_support |
		data.variables.generate_eof_lookahead_support;
	
	return flag;
}

// if the function returns some nonnegative n, then L(expr) consists entirely
// of n character long strings.
// if the function returns -1, then either L(expr) contains strings of
// different length, or the function has just failed to notice the opposite.
int expression_length(NonterminalExpression *expr)
{
	if(expr->expanded)
		return 1;
	else if(typeid(*expr)==typeid(NonterminalExpressionDisjunction))
	{
		NonterminalExpressionDisjunction &expr_d=*dynamic_cast<NonterminalExpressionDisjunction *>(expr);
		int result1=expression_length(expr_d.expr1);
		int result2=expression_length(expr_d.expr2);
		if(result1==result2 && result1!=-1)
			return result1;
		else
			return -1;
	}
	else if(typeid(*expr)==typeid(NonterminalExpressionConjunction))
	{
		NonterminalExpressionConjunction &expr_c=*dynamic_cast<NonterminalExpressionConjunction *>(expr);
		int result1=expression_length(expr_c.expr1);
		int result2=expression_length(expr_c.expr2);
		if(result1==result2 && result1!=-1)
			return result1;
		else
			return -1;
	}
	else if(typeid(*expr)==typeid(NonterminalExpressionConcatenation))
	{
		NonterminalExpressionConcatenation &expr_cat=*dynamic_cast<NonterminalExpressionConcatenation *>(expr);
		int result1=expression_length(expr_cat.expr1);
		int result2=expression_length(expr_cat.expr2);
		if(result1!=-1 && result2!=-1)
			return result1+result2;
		else
			return -1;
	}
	else if(typeid(*expr)==typeid(NonterminalExpressionComplement))
		return -1;
	else if(typeid(*expr)==typeid(NonterminalExpressionOmittable))
	{
		NonterminalExpressionOmittable &expr_om=*dynamic_cast<NonterminalExpressionOmittable *>(expr);
		int result=expression_length(expr_om.expr);
		if(!result)
			return 0;
		else
			return -1;
	}
	else if(typeid(*expr)==typeid(NonterminalExpressionInParentheses))
	{
		NonterminalExpressionInParentheses &expr_p=*dynamic_cast<NonterminalExpressionInParentheses *>(expr);
		return expression_length(expr_p.expr);
	}
	else if(typeid(*expr)==typeid(NonterminalExpressionIteration))
	{
		NonterminalExpressionIteration &expr_it=*dynamic_cast<NonterminalExpressionIteration *>(expr);
		int result=expression_length(expr_it.expr);
		if(!result)
			return 0;
		else
			return -1;
	}
	else if(typeid(*expr)==typeid(NonterminalExpressionCondition))
		return 1; // this is right even if the condition is always false.
	else if(typeid(*expr)==typeid(NonterminalExpressionRange))
		return 1;
	else if(typeid(*expr)==typeid(NonterminalExpressionEpsilon))
		return 0;
	else if(typeid(*expr)==typeid(NonterminalExpressionSymbol))
	{
		NonterminalExpressionSymbol &expr_s=*dynamic_cast<NonterminalExpressionSymbol *>(expr);
		
		if(expr_s.expr->is_nts)
		{
			int nn=expr_s.expr->nn;
			if(data.derivation_paths[nn][nn].v.size())
				return -1;
			else if(data.nonterminals[nn].expanded)
				return 1;
			else if(data.nonterminals[nn].expression_length_calculated)
				return data.nonterminals[nn].expression_length;
			else
			{
				assert(!data.derivation_paths[nn][nn].v.size() &&
					!data.nonterminals[nn].expression_length_calculated);
				
				data.nonterminals[nn].expression_length=expression_length(data.nonterminals[nn].rules[0]->right);
				assert(("change me!", false));
				data.nonterminals[nn].expression_length_calculated=true;
				
				return data.nonterminals[nn].expression_length;
			}
		}
		else
			return expr_s.expr->s.size();
	}
	else
	{
		assert(false);
		return false; // to please the compiler
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本大胆欧美人术艺术动态| 国产精品久久一卡二卡| 99精品桃花视频在线观看| 久久精品久久久精品美女| 天天免费综合色| 日韩中文字幕区一区有砖一区| 亚洲精品国产一区二区精华液 | 中文字幕不卡在线观看| 精品成人a区在线观看| 久久日韩粉嫩一区二区三区| 久久久久久久久97黄色工厂| 日韩黄色小视频| 日本欧美一区二区在线观看| 日韩高清不卡一区| 国产一区二区女| 成人美女视频在线观看18| 99久久综合精品| 欧美日韩色一区| 日韩一级二级三级精品视频| 久久一日本道色综合| 中文字幕免费不卡在线| 亚洲美女在线一区| 日韩高清欧美激情| 国产精品一区二区不卡| 97精品国产露脸对白| 欧美日韩一区视频| 久久久精品综合| 一区二区免费在线播放| 久久精品国产在热久久| 成人开心网精品视频| 欧美性欧美巨大黑白大战| 91精品欧美福利在线观看| 久久色在线观看| 亚洲自拍偷拍图区| 国产九色精品成人porny| 色8久久精品久久久久久蜜| 日韩一区二区三区精品视频| 国产精品你懂的| 亚洲电影在线免费观看| 国产91精品精华液一区二区三区| 欧美日韩一区三区| 中日韩av电影| 麻豆精品蜜桃视频网站| 色哟哟一区二区| 久久久亚洲高清| 亚洲h精品动漫在线观看| 丁香激情综合五月| 精品久久久影院| 一区二区三区欧美久久| 国产精品99久久久久| 欧美久久久久久久久中文字幕| 欧美国产精品v| 美女视频第一区二区三区免费观看网站| 成人免费高清在线观看| 欧美成人官网二区| 丝袜国产日韩另类美女| 色婷婷av一区二区三区大白胸| 久久人人爽爽爽人久久久| 丝袜亚洲另类丝袜在线| 91久久精品一区二区三区| 国产网站一区二区三区| 久久99久久99| 91精品国产色综合久久不卡电影| 亚洲黄色尤物视频| 色婷婷综合视频在线观看| 中文字幕精品三区| 国产伦精品一区二区三区视频青涩 | 国产成人在线免费观看| 欧美一级在线视频| 性做久久久久久久免费看| 91官网在线免费观看| 亚洲欧洲韩国日本视频| 风间由美一区二区三区在线观看 | 欧美精品自拍偷拍动漫精品| 亚洲综合在线观看视频| 色香色香欲天天天影视综合网| 中文字幕乱码日本亚洲一区二区| 国产一区二区三区不卡在线观看| 欧美电视剧免费观看| 久久精品99国产精品日本| 欧美一区二区在线不卡| 视频一区二区中文字幕| 91麻豆精品国产91久久久久久久久| 亚洲午夜精品一区二区三区他趣| 91视频www| 亚洲免费高清视频在线| 欧美性色欧美a在线播放| 亚洲一区二区在线观看视频| 欧美亚洲国产一区二区三区| 亚洲成av人片一区二区| 91精品久久久久久蜜臀| 国产在线国偷精品免费看| 国产欧美日韩亚州综合| 色综合中文字幕国产| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 高清在线不卡av| 亚洲少妇中出一区| 欧美日韩极品在线观看一区| 极品少妇xxxx精品少妇| 国产女人水真多18毛片18精品视频 | 久久久久免费观看| 成人福利视频在线| 亚洲大片精品永久免费| 亚洲成人自拍偷拍| 日韩美女一区二区三区四区| 成人午夜私人影院| 一区二区三区不卡视频| 日韩精品中文字幕在线一区| 高清shemale亚洲人妖| 亚洲成av人片| 中文字幕+乱码+中文字幕一区| 在线视频你懂得一区二区三区| 久久成人精品无人区| 亚洲同性同志一二三专区| 欧美久久一二三四区| 成人av高清在线| 免费欧美日韩国产三级电影| 中文字幕在线观看不卡视频| 91精品国产综合久久久蜜臀图片| 国产91色综合久久免费分享| 亚洲国产精品自拍| 国产日产精品一区| 欧美日韩国产一级| 99re8在线精品视频免费播放| 久久丁香综合五月国产三级网站| 亚洲三级理论片| 欧美国产乱子伦| 亚洲精品一区二区三区精华液 | 亚洲成人av福利| 一区视频在线播放| 久久久噜噜噜久久人人看 | 久久先锋影音av| 欧美日韩国产大片| 在线视频欧美精品| av福利精品导航| 国产麻豆精品在线| 狠狠色丁香婷婷综合久久片| 亚洲自拍欧美精品| 自拍偷拍欧美精品| 日本一区二区三区视频视频| 精品国产一区二区三区不卡| 欧美剧情电影在线观看完整版免费励志电影| 9i在线看片成人免费| 国产mv日韩mv欧美| 国产精品1024久久| 国产精品456露脸| 国产剧情一区二区三区| 国产麻豆精品视频| 国产老女人精品毛片久久| 狠狠色丁香久久婷婷综合_中| 久久99在线观看| 精品一区免费av| 国产专区欧美精品| 国产一区二区在线观看免费| 国内精品伊人久久久久av一坑| 久久机这里只有精品| 美女一区二区视频| 精油按摩中文字幕久久| 国产乱码精品1区2区3区| 国产精一品亚洲二区在线视频| 韩国三级在线一区| 国产精品综合二区| 国产成人在线网站| 91香蕉国产在线观看软件| 99国产精品久久久久久久久久| 成人美女视频在线看| 91美女片黄在线观看| 欧美曰成人黄网| 在线综合视频播放| 久久综合av免费| 国产精品国产三级国产三级人妇 | 91麻豆文化传媒在线观看| 色网站国产精品| 欧美人牲a欧美精品| 欧美videossexotv100| 国产欧美精品一区二区色综合朱莉| 国产精品欧美久久久久无广告| 亚洲伦在线观看| 青娱乐精品在线视频| 国产成人精品aa毛片| 日本韩国精品一区二区在线观看| 7777精品久久久大香线蕉| 精品处破学生在线二十三| 国产精品二三区| 日韩精品欧美成人高清一区二区| 国产在线视视频有精品| 99riav一区二区三区| 日韩欧美在线1卡| 国产精品国产三级国产普通话三级| 亚洲成av人影院| 成人中文字幕电影| 在线电影欧美成精品| 国产午夜亚洲精品不卡| 亚洲国产aⅴ天堂久久| 国产一区二区不卡老阿姨| 欧洲国内综合视频| 久久网站最新地址| 亚洲福利视频一区| 成人教育av在线| 日韩视频123|