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

📄 lexical.dlp.svn-base

📁 Complete support for EBNF notation; Object-oriented parser design; C++ output; Deterministic bottom-
💻 SVN-BASE
字号:
start_conditions MAIN, CPP_CODE;append_data_member=true;store_lexeme_in_string=false;code_in_class={ int brace_count; };code_in_constructor={ brace_count=0; };any-char -> '\t' | '\n' | '\r' | condition(c>=' ');digit -> "0".."9";hex-digit -> digit | "A".."F" | "a".."f";non-digit -> "A".."Z" | "a".."z" | "_";whitespace-char -> '\t' | '\n' | '\r' | ' ';s-char -> condition(c>=' ' & c!='"' & c!="\\" & c<128) |	"\\" condition(c>=' ' & c<128);c-char -> condition(c>=' ' & c!="'" & c!="\\" & c<128) |	"\\" condition(c>=' ' & c<128);c-comment -> "/*" ~contains("*/") "*/";cpp-comment -> "//" condition(c in any-char & c!='\n')* '\n';whitespace -> (whitespace-char | c-comment | cpp-comment)+;identifier -> non-digit (non-digit | digit | "-")* & ~(#* "-" | "-" #*);number -> digit+;hex-number -> "0x" hex-digit+;string -> '"' s-char* '"' | "'" c-char* "'";old-style-cpp-code -> "@@" (any-char* & ~contains("@@")) "@@";whitespace<MAIN> ==> { };error ==> {	if(start_condition==CPP_CODE)		cout << "Lexical error in code starting at line " << line()			<< " column " << column() << ".\n";	else		cout << "Lexical error at line " << line()			<< " column " << column() << ".\n";		return make_token<Whale::TerminalError>();};eof ==> {	if(start_condition==CPP_CODE)	{		cout << "End of file encountered while reading code starting "			<< "at line " << line() << " column " << column() << ".\n";		set_start_condition(MAIN);		return make_token<Whale::TerminalError>();	}	else		return make_token<Whale::TerminalEOF>();};"terminal"<MAIN> ==> TerminalKwTerminal;"nonterminal"<MAIN> ==> TerminalKwNonterminal;"external"<MAIN> ==> TerminalKwExternal;"class"<MAIN> ==> TerminalKwClass;"nothing"<MAIN> ==> TerminalKwNothing;"true"<MAIN> ==> TerminalKwTrue;"false"<MAIN> ==> TerminalKwFalse;"e" | "epsilon" <MAIN> ==> TerminalE;"iteration_pair"<MAIN> ==> TerminalKwIterationPair;"create"<MAIN> ==> TerminalKwCreate;"update"<MAIN> ==> TerminalKwUpdate;"connect_up"<MAIN> ==> TerminalKwConnectUp;"precedence" | "priority" <MAIN> ==> TerminalKwPrecedence;"start"<MAIN> ==> TerminalKwStart;keyword -> "terminal" | "nonterminal" | "external" | "class" | "nothing" | "e" |	"epsilon" | "true" | "false" | "iteration_pair" | "create" | "update" |	"connect_up" | "precedence" | "priority";"::=" | "->" <MAIN> ==> TerminalArrow;";"<MAIN> ==> TerminalSemicolon;":"<MAIN> ==> TerminalColon;"::"<MAIN> ==> TerminalScope;","<MAIN> ==> TerminalComma;"|"<MAIN> ==> TerminalOr;"&"<MAIN> ==> TerminalAnd;"~"<MAIN> ==> TerminalNot;"/"<MAIN> ==> TerminalSlash;"<"<MAIN> ==> TerminalLessThan;">"<MAIN> ==> TerminalGreaterThan;"<="<MAIN> ==> TerminalLessOrEqual;">="<MAIN> ==> TerminalGreaterOrEqual;"=="<MAIN> ==> TerminalEqual;"!="<MAIN> ==> TerminalNotEqual;"("<MAIN> ==> TerminalLeftParenthesis;")"<MAIN> ==> TerminalRightParenthesis;"["<MAIN> ==> TerminalLeftBracket;"]"<MAIN> ==> TerminalRightBracket;"*"<MAIN> ==> TerminalAsterisk;"+"<MAIN> ==> TerminalPlus;"="<MAIN> ==> TerminalAssign;string<MAIN> ==> TerminalString;'"' s-char* | "'" c-char* <MAIN> ==> {	cout << "Unterminated string at line " << line()		<< " column " << column() << ".\n";	return make_token<Whale::TerminalError>();};number<MAIN> ==> TerminalNumber;hex-number<MAIN> ==> TerminalHexNumber;identifier & ~keyword <MAIN> ==> TerminalId;old-style-cpp-code <MAIN> ==> TerminalCode;"{"<MAIN> ==> {	set_start_condition(CPP_CODE);	brace_count=1;	append=true;};"{"<CPP_CODE> ==> { brace_count++; append=true; };"}"<CPP_CODE> ==> {	brace_count--;	if(brace_count==0)	{		set_start_condition(MAIN);		return make_token<Whale::TerminalCode>();	}	else		append=true;};(whitespace | string | any-char+ & ~contains("{" | "}" | "/*" | "//" | '"' |	"'") & ~(any-char* "/"))+ <CPP_CODE> ==> { append=true; };

⌨️ 快捷键说明

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