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

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

?? parser.cpp

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

/* An SLR(1) parser generated by Whale */

#include "parser.h"
using namespace std;
using namespace Whale;

const char *Whale::Parser::whale_copyright_notice=
	"An SLR(1) parser generated by Whale 0.3.2 (17 April, 2002).\n"
	"(C) Alexander Okhotin <okhotin@aha.ru>, 1999-2002.\n"
	"(C) Vladimir Prus <ghost@cs.msu.su>, 2000-2002.\n";

Whale::Terminal::~Terminal()
{
	delete[] text;
}

Whale::Nonterminal::~Nonterminal()
{
	for(Symbol *s=first_child; s;)
	{
		Symbol *current=s;
		s=s->next_sibling;
		delete current;
	}
}

NonterminalS *Whale::Parser::parse()
{
	initialize();
	for(;;)
	{
		int state=state_stack[state_stack.size()-1];
		LRAction lr_action=access_action_table(state, input_symbol->number());
		if(lr_action.is_shift() && input_symbol->number()!=error_terminal_number)
		{
			int new_state=lr_action.shift_state();
			symbol_stack.push_back(input_symbol);
			state_stack.push_back(new_state);
			input_symbol=lexical_analyzer.get_token();
		}
		else if(lr_action.is_reduce())
		{
			int rule_number=lr_action.reduce_rule();
			int rule_length=rules[rule_number].length;
			int rule_start=symbol_stack.size()-rule_length;
			Nonterminal *new_symbol;
			
			switch(rule_number)
			{
			case 1: {	// S -> S-IteratorI
				NonterminalS *n=new NonterminalS;
				
				NonterminalS::IteratorI *it_i=(NonterminalS::IteratorI *)symbol_stack[rule_start];
				for(unsigned i=0; i<it_i->body.size(); i++)
				{
					n->statements.push_back(it_i->body[i]->statements);
				}
				
				new_symbol=n;
				} break;
			case 2: {	// rule-statement -> id "->" expression ";"
				NonterminalRuleStatement *n=new NonterminalRuleStatement;
				
				n->left=(TerminalId *)symbol_stack[rule_start];
				n->arrow=(TerminalArrow *)symbol_stack[rule_start+1];
				n->right=(NonterminalExpression *)symbol_stack[rule_start+2];
				garbage.push_back(symbol_stack[rule_start+3]);
				
				new_symbol=n;
				} break;
			case 3: {	// action-statement -> pair-of-expressions "==>" action
				NonterminalActionStatement *n=new NonterminalActionStatement;
				
				n->expr=(Symbol *)symbol_stack[rule_start];
				n->arrow=(TerminalImplication *)symbol_stack[rule_start+1];
				n->action=(NonterminalAction *)symbol_stack[rule_start+2];
				
				n->a4=NULL;
				n->start_conditions=NULL;
				n->a6=NULL;
				new_symbol=n;
				} break;
			case 4: {	// action-statement -> pair-of-expressions "<" start-conditions-expression ">" "==>" action
				NonterminalActionStatement *n=new NonterminalActionStatement;
				
				n->expr=(Symbol *)symbol_stack[rule_start];
				n->a4=(TerminalLess *)symbol_stack[rule_start+1];
				n->start_conditions=(NonterminalStartConditionsExpression *)symbol_stack[rule_start+2];
				n->a6=(TerminalGreater *)symbol_stack[rule_start+3];
				n->arrow=(TerminalImplication *)symbol_stack[rule_start+4];
				n->action=(NonterminalAction *)symbol_stack[rule_start+5];
				
				new_symbol=n;
				} break;
			case 5: {	// action-statement -> "eof" "==>" action
				NonterminalActionStatement *n=new NonterminalActionStatement;
				
				n->expr=(Symbol *)symbol_stack[rule_start];
				n->arrow=(TerminalImplication *)symbol_stack[rule_start+1];
				n->action=(NonterminalAction *)symbol_stack[rule_start+2];
				
				n->a4=NULL;
				n->start_conditions=NULL;
				n->a6=NULL;
				new_symbol=n;
				} break;
			case 6: {	// action-statement -> "eof" "<" start-conditions-expression ">" "==>" action
				NonterminalActionStatement *n=new NonterminalActionStatement;
				
				n->expr=(Symbol *)symbol_stack[rule_start];
				n->a4=(TerminalLess *)symbol_stack[rule_start+1];
				n->start_conditions=(NonterminalStartConditionsExpression *)symbol_stack[rule_start+2];
				n->a6=(TerminalGreater *)symbol_stack[rule_start+3];
				n->arrow=(TerminalImplication *)symbol_stack[rule_start+4];
				n->action=(NonterminalAction *)symbol_stack[rule_start+5];
				
				new_symbol=n;
				} break;
			case 7: {	// action-statement -> "error" "==>" action
				NonterminalActionStatement *n=new NonterminalActionStatement;
				
				n->expr=(Symbol *)symbol_stack[rule_start];
				n->arrow=(TerminalImplication *)symbol_stack[rule_start+1];
				n->action=(NonterminalAction *)symbol_stack[rule_start+2];
				
				n->a4=NULL;
				n->start_conditions=NULL;
				n->a6=NULL;
				new_symbol=n;
				} break;
			case 8: {	// action-statement -> "error" "<" start-conditions-expression ">" "==>" action
				NonterminalActionStatement *n=new NonterminalActionStatement;
				
				n->expr=(Symbol *)symbol_stack[rule_start];
				n->a4=(TerminalLess *)symbol_stack[rule_start+1];
				n->start_conditions=(NonterminalStartConditionsExpression *)symbol_stack[rule_start+2];
				n->a6=(TerminalGreater *)symbol_stack[rule_start+3];
				n->arrow=(TerminalImplication *)symbol_stack[rule_start+4];
				n->action=(NonterminalAction *)symbol_stack[rule_start+5];
				
				new_symbol=n;
				} break;
			case 9: {	// start-conditions-statement -> "start_conditions" start-conditions-statement-IteratorI ";"
				NonterminalStartConditionsStatement *n=new NonterminalStartConditionsStatement;
				
				n->a1=(TerminalKwStartConditions *)symbol_stack[rule_start];
				NonterminalStartConditionsStatement::IteratorI *it2_i=(NonterminalStartConditionsStatement::IteratorI *)symbol_stack[rule_start+1];
				for(unsigned i=0; i<it2_i->body_a.size(); i++)
				{
					n->names.push_back(it2_i->body_a[i]->names);
					if(i==it2_i->body_b.size()) break;
				}
				n->a4=(TerminalSemicolon *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 10: {	// option-statement -> id "=" option-statement-IteratorI ";"
				NonterminalOptionStatement *n=new NonterminalOptionStatement;
				
				n->left=(TerminalId *)symbol_stack[rule_start];
				n->a2=(TerminalAssign *)symbol_stack[rule_start+1];
				NonterminalOptionStatement::IteratorI *it2_i=(NonterminalOptionStatement::IteratorI *)symbol_stack[rule_start+2];
				for(unsigned i=0; i<it2_i->body_a.size(); i++)
				{
					n->right.push_back(it2_i->body_a[i]->right);
					if(i==it2_i->body_b.size()) break;
					n->a10.push_back(it2_i->body_b[i]->a10);
				}
				n->a11=(TerminalSemicolon *)symbol_stack[rule_start+3];
				
				new_symbol=n;
				} break;
			case 11: {	// invalid-statement -> error ";"
				NonterminalInvalidStatement *n=new NonterminalInvalidStatement;
				
				n->a1=(TerminalError *)symbol_stack[rule_start];
				n->a2=(TerminalSemicolon *)symbol_stack[rule_start+1];
				
				new_symbol=n;
				} break;
			case 12: {	// expression -> expression expression
				NonterminalExpressionConcatenation *n=new NonterminalExpressionConcatenation;
				
				n->expr1=(NonterminalExpression *)symbol_stack[rule_start];
				n->expr2=(NonterminalExpression *)symbol_stack[rule_start+1];
				
				new_symbol=n;
				} break;
			case 13: {	// expression -> expression "|" expression
				NonterminalExpressionDisjunction *n=new NonterminalExpressionDisjunction;
				
				n->expr1=(NonterminalExpression *)symbol_stack[rule_start];
				garbage.push_back(symbol_stack[rule_start+1]);
				n->expr2=(NonterminalExpression *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 14: {	// expression -> expression "&" expression
				NonterminalExpressionConjunction *n=new NonterminalExpressionConjunction;
				
				n->expr1=(NonterminalExpression *)symbol_stack[rule_start];
				garbage.push_back(symbol_stack[rule_start+1]);
				n->expr2=(NonterminalExpression *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 15: {	// expression -> expression "*"
				NonterminalExpressionIteration *n=new NonterminalExpressionIteration;
				
				n->expr=(NonterminalExpression *)symbol_stack[rule_start];
				n->sign=(Terminal *)symbol_stack[rule_start+1];
				
				new_symbol=n;
				} break;
			case 16: {	// expression -> expression "+"
				NonterminalExpressionIteration *n=new NonterminalExpressionIteration;
				
				n->expr=(NonterminalExpression *)symbol_stack[rule_start];
				n->sign=(Terminal *)symbol_stack[rule_start+1];
				
				new_symbol=n;
				} break;
			case 17: {	// expression -> expression-s
				NonterminalExpressionSymbol *n=new NonterminalExpressionSymbol;
				
				n->expr=(NonterminalExpressionS *)symbol_stack[rule_start];
				
				new_symbol=n;
				} break;
			case 18: {	// expression -> expression-s ".." expression-s
				NonterminalExpressionRange *n=new NonterminalExpressionRange;
				
				n->first_expr=(NonterminalExpressionS *)symbol_stack[rule_start];
				n->range_kw=(Terminal *)symbol_stack[rule_start+1];
				n->last_expr=(NonterminalExpressionS *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 19: {	// expression -> "~" expression
				NonterminalExpressionComplement *n=new NonterminalExpressionComplement;
				
				garbage.push_back(symbol_stack[rule_start]);
				n->expr=(NonterminalExpression *)symbol_stack[rule_start+1];
				
				new_symbol=n;
				} break;
			case 20: {	// expression -> "(" expression ")"
				NonterminalExpressionInParentheses *n=new NonterminalExpressionInParentheses;
				
				garbage.push_back(symbol_stack[rule_start]);
				n->expr=(NonterminalExpression *)symbol_stack[rule_start+1];
				garbage.push_back(symbol_stack[rule_start+2]);
				
				new_symbol=n;
				} break;
			case 21: {	// expression -> "[" expression "]"
				NonterminalExpressionOmittable *n=new NonterminalExpressionOmittable;
				
				garbage.push_back(symbol_stack[rule_start]);
				n->expr=(NonterminalExpression *)symbol_stack[rule_start+1];
				garbage.push_back(symbol_stack[rule_start+2]);
				
				new_symbol=n;
				} break;
			case 22: {	// expression -> "#"
				NonterminalExpressionSharpSign *n=new NonterminalExpressionSharpSign;
				
				n->op=(TerminalSharpSign *)symbol_stack[rule_start];
				
				new_symbol=n;
				} break;
			case 23: {	// expression -> "e"
				NonterminalExpressionEpsilon *n=new NonterminalExpressionEpsilon;
				
				garbage.push_back(symbol_stack[rule_start]);
				
				new_symbol=n;
				} break;
			case 24: {	// expression -> "condition" "(" expression-c ")"
				NonterminalExpressionCondition *n=new NonterminalExpressionCondition;
				
				garbage.push_back(symbol_stack[rule_start]);
				garbage.push_back(symbol_stack[rule_start+1]);
				n->condition=(NonterminalExpressionC *)symbol_stack[rule_start+2];
				garbage.push_back(symbol_stack[rule_start+3]);
				
				new_symbol=n;
				} break;
			case 25: {	// expression -> "range" "(" expression-s "," expression-s ")"
				NonterminalExpressionRange *n=new NonterminalExpressionRange;
				
				n->range_kw=(Terminal *)symbol_stack[rule_start];
				garbage.push_back(symbol_stack[rule_start+1]);
				n->first_expr=(NonterminalExpressionS *)symbol_stack[rule_start+2];
				garbage.push_back(symbol_stack[rule_start+3]);
				n->last_expr=(NonterminalExpressionS *)symbol_stack[rule_start+4];
				garbage.push_back(symbol_stack[rule_start+5]);
				
				new_symbol=n;
				} break;
			case 26: {	// expression -> "contains" "(" expression ")"
				NonterminalExpressionContains *n=new NonterminalExpressionContains;
				
				n->a1=(TerminalKwContains *)symbol_stack[rule_start];
				garbage.push_back(symbol_stack[rule_start+1]);
				n->expr=(NonterminalExpression *)symbol_stack[rule_start+2];
				garbage.push_back(symbol_stack[rule_start+3]);
				
				new_symbol=n;
				} break;
			case 27: {	// expression-s -> id
				NonterminalExpressionS *n=new NonterminalExpressionS;
				
				n->symbol=(Terminal *)symbol_stack[rule_start];
				
				new_symbol=n;
				} break;
			case 28: {	// expression-s -> str
				NonterminalExpressionS *n=new NonterminalExpressionS;
				
				n->symbol=(Terminal *)symbol_stack[rule_start];
				
				new_symbol=n;
				} break;
			case 29: {	// expression-s -> num
				NonterminalExpressionS *n=new NonterminalExpressionS;
				
				n->symbol=(Terminal *)symbol_stack[rule_start];
				
				new_symbol=n;
				} break;
			case 30: {	// expression-s -> hexnum
				NonterminalExpressionS *n=new NonterminalExpressionS;
				
				n->symbol=(Terminal *)symbol_stack[rule_start];
				
				new_symbol=n;
				} break;
			case 31: {	// expression-c -> expression-s "<" expression-s
				NonterminalExpressionC_Comparison *n=new NonterminalExpressionC_Comparison;
				
				n->left=(NonterminalExpressionS *)symbol_stack[rule_start];
				n->comparison_operator=(Terminal *)symbol_stack[rule_start+1];
				n->right=(NonterminalExpressionS *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 32: {	// expression-c -> expression-s ">" expression-s
				NonterminalExpressionC_Comparison *n=new NonterminalExpressionC_Comparison;
				
				n->left=(NonterminalExpressionS *)symbol_stack[rule_start];
				n->comparison_operator=(Terminal *)symbol_stack[rule_start+1];
				n->right=(NonterminalExpressionS *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 33: {	// expression-c -> expression-s "<=" expression-s
				NonterminalExpressionC_Comparison *n=new NonterminalExpressionC_Comparison;
				
				n->left=(NonterminalExpressionS *)symbol_stack[rule_start];
				n->comparison_operator=(Terminal *)symbol_stack[rule_start+1];
				n->right=(NonterminalExpressionS *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 34: {	// expression-c -> expression-s ">=" expression-s
				NonterminalExpressionC_Comparison *n=new NonterminalExpressionC_Comparison;
				
				n->left=(NonterminalExpressionS *)symbol_stack[rule_start];
				n->comparison_operator=(Terminal *)symbol_stack[rule_start+1];
				n->right=(NonterminalExpressionS *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 35: {	// expression-c -> expression-s "==" expression-s
				NonterminalExpressionC_Comparison *n=new NonterminalExpressionC_Comparison;
				
				n->left=(NonterminalExpressionS *)symbol_stack[rule_start];
				n->comparison_operator=(Terminal *)symbol_stack[rule_start+1];
				n->right=(NonterminalExpressionS *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 36: {	// expression-c -> expression-s "!=" expression-s
				NonterminalExpressionC_Comparison *n=new NonterminalExpressionC_Comparison;
				
				n->left=(NonterminalExpressionS *)symbol_stack[rule_start];
				n->comparison_operator=(Terminal *)symbol_stack[rule_start+1];
				n->right=(NonterminalExpressionS *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 37: {	// expression-c -> expression-s "in" id
				NonterminalExpressionC_In *n=new NonterminalExpressionC_In;
				
				n->c=(NonterminalExpressionS *)symbol_stack[rule_start];
				garbage.push_back(symbol_stack[rule_start+1]);
				n->symbol=(TerminalId *)symbol_stack[rule_start+2];
				
				new_symbol=n;
				} break;
			case 38: {	// expression-c -> expression-c "|" expression-c
				NonterminalExpressionC_Disjunction *n=new NonterminalExpressionC_Disjunction;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二视频| 亚洲欧美aⅴ...| 亚洲免费观看在线观看| 日韩av不卡一区二区| 成人av在线播放网址| 日韩三级视频在线观看| 亚洲少妇30p| 国内精品在线播放| 欧美三级韩国三级日本一级| 国产欧美日产一区| 蜜桃视频在线观看一区二区| 色拍拍在线精品视频8848| www日韩大片| 日韩精品1区2区3区| 色先锋资源久久综合| 国产精品网站一区| 精品影视av免费| 91精品视频网| 亚洲va韩国va欧美va| 99国产精品久久久久久久久久| 亚洲精品一区二区三区福利| 粉嫩aⅴ一区二区三区四区五区 | 国产成人午夜视频| 91精品国产乱码| 亚洲国产精品久久久久秋霞影院 | 久热成人在线视频| 7777精品伊人久久久大香线蕉的| 亚洲美女区一区| 成人国产精品视频| 国产精品拍天天在线| 国产成人夜色高潮福利影视| 久久久亚洲国产美女国产盗摄| 日本美女一区二区三区| 在线播放一区二区三区| 亚洲一区二区不卡免费| 欧美无乱码久久久免费午夜一区| 亚洲伦在线观看| 色婷婷久久久久swag精品| 亚洲免费观看高清完整| 色婷婷狠狠综合| 亚洲一区在线看| 欧美精品三级在线观看| 免费一级片91| 久久久亚洲欧洲日产国码αv| 国产精品99久久久久久似苏梦涵| 久久精品亚洲精品国产欧美kt∨ | 亚洲精品在线观看网站| 国产综合久久久久影院| 国产精品人人做人人爽人人添| 成人免费看片app下载| 亚洲六月丁香色婷婷综合久久 | 日韩三级免费观看| 国产一二精品视频| **性色生活片久久毛片| 欧美猛男超大videosgay| 日日摸夜夜添夜夜添国产精品| 日韩视频免费直播| 国产91综合网| 亚洲一区欧美一区| 亚洲精品在线免费播放| 99综合电影在线视频| 午夜不卡av在线| 久久久电影一区二区三区| 91小视频在线免费看| 视频一区视频二区中文字幕| 久久免费午夜影院| 一本大道久久精品懂色aⅴ| 日韩影院精彩在线| 国产日产精品一区| 7777精品伊人久久久大香线蕉的 | 91福利国产成人精品照片| 日韩av一区二区三区四区| 国产三级精品视频| 欧美在线短视频| 国产成人免费网站| 国产成a人亚洲精| 亚洲一区二区三区四区在线免费观看| 91精品国产一区二区| 顶级嫩模精品视频在线看| 午夜精品福利视频网站| 久久精品人人做人人爽人人| 欧美视频第二页| 成人在线一区二区三区| 青青草原综合久久大伊人精品| 国产精品拍天天在线| 欧美一区二区视频观看视频| 96av麻豆蜜桃一区二区| 国模冰冰炮一区二区| 亚洲综合在线免费观看| 国产欧美精品一区aⅴ影院 | 成人av影视在线观看| 男男视频亚洲欧美| 亚洲综合色区另类av| 欧美高清在线一区| 精品国产亚洲一区二区三区在线观看| 欧美综合一区二区| 波多野结衣欧美| 国产精品中文字幕欧美| 三级不卡在线观看| 亚洲一区二区三区四区中文字幕| 中文字幕一区二区三区色视频 | 中文字幕中文字幕中文字幕亚洲无线 | 国产清纯白嫩初高生在线观看91 | 在线观看中文字幕不卡| 国产成人h网站| 国产美女精品一区二区三区| 免费观看一级特黄欧美大片| 亚洲香肠在线观看| 亚洲电影一级黄| 一级女性全黄久久生活片免费| 亚洲男人都懂的| 亚洲欧美日韩久久| 一区二区三区美女视频| 亚洲欧美日韩一区二区三区在线观看 | 亚洲精品高清视频在线观看| 日韩美女啊v在线免费观看| 国产精品久久久久一区二区三区| 国产日本一区二区| 中文字幕一区在线| 成人欧美一区二区三区视频网页| 国产精品美女久久久久久久网站| 久久精品一二三| 中文字幕一区日韩精品欧美| 中文字幕av一区二区三区高 | 久久久综合激的五月天| 日韩精品影音先锋| 久久影音资源网| 精品国产一区久久| 日本一区二区视频在线| 国产亚洲精品超碰| 亚洲国产激情av| 欧美日韩一区二区三区高清| 在线成人小视频| 日韩一区二区三区观看| 欧美一区二区日韩一区二区| 欧美日韩第一区日日骚| 欧美自拍偷拍一区| 欧美三区在线视频| 欧美精品aⅴ在线视频| 666欧美在线视频| 久久一区二区三区四区| 欧美国产禁国产网站cc| 亚洲欧洲成人精品av97| 亚洲综合偷拍欧美一区色| 日韩avvvv在线播放| 激情成人午夜视频| 成人做爰69片免费看网站| 99久久er热在这里只有精品15| 激情偷乱视频一区二区三区| 99久久99久久久精品齐齐| 色狠狠色噜噜噜综合网| 欧美肥妇free| 久久综合久色欧美综合狠狠| 亚洲三级在线免费观看| 亚洲动漫第一页| 国产在线国偷精品免费看| 色婷婷一区二区| 久久久影视传媒| 午夜精品123| 9l国产精品久久久久麻豆| 欧美性猛交一区二区三区精品| 欧美精品一区二区蜜臀亚洲| 国产精品污网站| 亚洲3atv精品一区二区三区| 岛国一区二区在线观看| 91福利在线导航| 日韩久久久久久| 国产精品色在线| 精品中文av资源站在线观看| av电影在线不卡| 日韩久久免费av| 五月激情综合婷婷| 成人免费视频视频| 日韩亚洲欧美成人一区| 国产精品蜜臀在线观看| 国产一区在线精品| 91久久国产最好的精华液| 精品电影一区二区| 一区二区三区在线视频免费| 国产99久久久久| 欧美一区二区人人喊爽| 最新久久zyz资源站| 日韩精品成人一区二区在线| 欧洲亚洲精品在线| 国产精品婷婷午夜在线观看| 国产一区欧美一区| 2欧美一区二区三区在线观看视频| 韩国av一区二区三区在线观看| 在线播放欧美女士性生活| 中文字幕综合网| 高清国产一区二区| 日韩亚洲欧美成人一区| 亚洲成人资源网| 91麻豆文化传媒在线观看| 久久综合久色欧美综合狠狠| 久久99久久99| 日韩午夜精品电影| 天堂成人免费av电影一区| 在线亚洲欧美专区二区| 国产精品久久毛片|