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

📄 cpp.g

📁 C Preprocessor,antlr的grammar语言描述,用于学习词法分析,语法分析
💻 G
📖 第 1 页 / 共 2 页
字号:
            |   ('\\\n') => ('\\\n')            |   ('\\\r\n') => ('\\\n')            |   ~'\n'               ) +        ;SIZEOF	:	'sizeof'		;DEFINED	:	'defined'			{					if(!inDirective)				_type = CKEYWORD;			}		;	IDENTIFIER				:	LETTER (LETTER|'0'..'9')* 			{				if(inDirective == true)				{					if(cpp == 'D') 					{						if(input.LA(1) != '(' )						{				 			inDefineMode= true; 				 			inDirective = false; 				 			cpp = 'X';						}						else 						{  							cpp = '('; 						}					}				}			}		;fragmentLETTER	:   '$'		|   'A'..'Z'		|   'a'..'z'		|   '_'		;/* Operators: */					STRINGIFICATION	:	'#_#_'				;SHARPSHARP		:	'##';ASSIGNEQUAL		:	'='	;COLON			:	':' ;COMMA			:	',' ;QUESTIONMARK	:	'?' ;SEMICOLON		:	';' ;POINTERTO		:	'->' ;LPAREN			:	'(' ;RPAREN	:	')' 			{				if(cpp=='(')				{					if(input.LA(1) != '\n')					{						inDefineMode = true; 						inDirective = false; 					}					cpp ='X';				}			}		;LSQUARE			:	'[' ;RSQUARE			:	']' ;LCURLY			:	'{' ;RCURLY			:	'}' ;EQUAL			:	'==';NOTEQUAL		:	'!=';LESSTHANOREQUALTO				:	'<=';LESSTHAN 		:	'<' ;GREATERTHANOREQUALTO				:	'>=';GREATERTHAN		:	'>' ;DIVIDE			:	'/' ;DIVIDEEQUAL		:	'/=';PLUS			:	'+' ;PLUSEQUAL		:	'+=';PLUSPLUS		:	'++';MINUS			:	'-' ;MINUSEQUAL		:	'-=';MINUSMINUS		:	'--';STAR			:	'*' ;TIMESEQUAL		:	'*=';MOD				:	'%' ;MODEQUAL		:	'%=';SHIFTRIGHT		:	'>>';SHIFTRIGHTEQUAL	:	'>>=';SHIFTLEFT		:	'<<';SHIFTLEFTEQUAL	:	'<<=';AND				:	'&&';NOT				:	'!' ;OR				:	'||';AMPERSAND		:	'&' ;BITWISEANDEQUAL	:	'&=';TILDE			:	'~' ;BITWISEOR		:	'|' ;BITWISEOREQUAL	:	'|=';BITWISEXOR		:	'^' ;BITWISEXOREQUAL	:	'^=';DOT				:	'.' ;	POINTERTOMBR	:	'->*' ;DOTMBR			:	'.*'  ;SCOPE			:	'::'  ;ELLIPSIS		:	'...' ;fragmentINCLUDE_FILE 			: '<' ( ' ' | '!' | '#' ..';' | '=' | '?' .. '[' | ']' .. '\u00FF')+ '>'     	|   '"' ( ' ' | '!' | '#' ..';' | '=' | '?' .. '[' | ']' .. '\u00FF')+ '"'     	;CHARACTER_LITERAL		:	('L')? '\'' ( EscapeSequence | ~('\''|'\\') ) '\''		;//STRING_LITERAL	:	'"' (options {greedy=false;} : EscapeSequence | ~('"'))* '"'STRING_LITERAL			:	'"' (EscapeSequence | ~('"'))* '"'		;HEX_LITERAL				:	'0' ('x'|'X') HexDigit+ IntegerTypeSuffix? 		;DECIMAL_LITERAL			:	('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix?		;OCTAL_LITERAL			:	'0' ('0'..'7')+ IntegerTypeSuffix?		;fragment HexDigit				:	('0'..'9'|'a'..'f'|'A'..'F') 		;fragment IntegerTypeSuffix		:	'u' | 'ul' | 'U' | 'UL' | 'l' | 'L'			;FLOATING_POINT_LITERAL		:	('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?		|	'.' ('0'..'9')+ Exponent? FloatTypeSuffix?		|	('0'..'9')+ Exponent FloatTypeSuffix?		|	('0'..'9')+ FloatTypeSuffix		;fragment Exponent				:	('e'|'E') ('+'|'-')? ('0'..'9')+ 		;fragment FloatTypeSuffix			:	('f'|'F'|'d'|'D') 		;fragment EscapeSequence			: 	'\\' ('b'|'t'|'n'|'f'|'r'|'v'|'\"'|'\''|'\\')		|	'\\' 'x' HexDigit+		|   OctalEscape		;fragment OctalEscape				:	'\\' ('0'..'3') ('0'..'7') ('0'..'7')		|	'\\' ('0'..'7') ('0'..'7')		|	'\\' ('0'..'7')		;fragment UnicodeEscape			:	'\\' 'u' HexDigit HexDigit HexDigit HexDigit		;COMMENT					:	'/*'  ( options {greedy=false;}:.)* '*/' 			  {_channel=99;}		|	'/' '\\' '\n' '*'  ( options {greedy=false;}:.)* '*/' {_channel=99;}		;LINE_COMMENT			:	'//' ~('\n'|'\r')* '\r'? '\n'		{			if(!inDirective)			{				try{											if(input.LT(1) != '#' && input.LT(1) != -1 )						{							_type = TEXT_END;						}						else						{							_type = End;						}				}				catch(Exception e)				{					_type = End;				}			}			else			{				 _type=End;			}			inDirective=false;			inDefineMode=false;			discardSpace = true;		}		;WS		:			{ 			if( this.getLine() != 1)			{				if(input.LA(-1) == '\n')					ltoken = End;				else					ltoken = input.LA(-1);			}			else			{				try				{					if(input.LA(-1) == '\n')						ltoken = End;					else						ltoken = input.LA(-1);					}				catch (Exception e)				{					ltoken = End;				}			}		}		(' '|'\r'|'\t'|'\f')+		{			 			if(inDirective ==  true)			{				if(discardSpace == true)				{					_channel = 99;				}				else				{					_type = WS;				}			}			else			{				if(!inDefineMode)				{					try					{						if(input.LA(1) != EOF  && input.LA(1) == '#' &&   ltoken == End )						{							_type = End;						}					}					catch (Exception e)					{						_channel = 99;					}				}			}		}		;macro_text				:	source_text+ -> ^(MACRO_DEFINE source_text+)		;End		:	WS?	 '\n'		{			if(!inDirective)			{				if(inDefineMode) 				{					_type=End;				}				else				{						try{													if(input.LT(1) != '#' && input.LT(1) != -1 )								{									_type = TEXT_END;								}						}						catch(Exception e)						{							_type = End;						}				}			} else {_type=End;}			ltoken =End;				inDirective=false;			inDefineMode=false;			discardSpace=true;		}		;ESCAPED_NEWLINE			:	('\\\n' | '\\\r\n')		{			_channel=99;		}		;COPERATOR       		:   {!inDirective}?         (   COLON               |   QUESTIONMARK		        |   POINTERTO			|	LCURLY				|	RCURLY					|	LSQUARE				|	RSQUARE           	|	STAR        |   EQUAL               |   NOTEQUAL            |   LESSTHANOREQUALTO   |   LESSTHAN                |   GREATERTHANOREQUALTO|   GREATERTHAN         |   DIVIDE              |   PLUSPLUS        |   MINUSMINUS          |   MOD                 |   SHIFTRIGHT          |   SHIFTLEFT         |   AND                 |   OR                  |   BITWISEOR           |   BITWISEXOR              |   DOT                 |   POINTERTOMBR        |   DOTMBR              |   SCOPE                |   AMPERSAND           |   PLUS                |   MINUS                |   TILDE               |   ASSIGNEQUAL         |   TIMESEQUAL          |   DIVIDEEQUAL        |   MODEQUAL            |   PLUSEQUAL           |   MINUSEQUAL          |   SHIFTLEFTEQUAL         |   SHIFTRIGHTEQUAL     |   BITWISEANDEQUAL     |   BITWISEXOREQUAL     |   BITWISEOREQUAL		|	NOT					|	ELLIPSIS			        )        ;CKEYWORD	:	{!inDirective}?					'typedef'	| '__va_list__'	| 'extern'	| 'static'	| 'auto'		| 'register' 				|	'void' 		| 'char'		| 'short'	| 'int'		| 'long'		| 'float' 				|	'double'	| 'signed'		| 'unsigned'| '__fpreg' | '__float80' 	| 'struct' 				|	'union'		| 'enum'		| 'const'	| 'volatile'|  'case' 		| 'default'					|	'switch'	| 'while'		| 'do' 		| 'for' 	|	'goto'		| 'continue'					|	'break'		| 'return'  	| 'if' 		| 'else'					;

⌨️ 快捷键说明

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