lexer.g

来自「Java写的词法/语法分析器。可生成JAVA语言或者是C++的词法和语法分析器。」· G 代码 · 共 139 行

G
139
字号
/* * Make sure to run antlr.Tool on the lexer.g file first! */options {	mangleLiteralPrefix = "TK_";}class TinyCLexer extends Lexer;options {	k=2;	exportVocab=TinyC;	charVocabulary = '\3'..'\377';}tokens {	"int"; "char"; "if"; "else"; "while";}WS	:	(' '	|	'\t'	|	'\n'	{newline();}	|	'\r')		{ _ttype = Token.SKIP; }	;SL_COMMENT : 	"//" 	(~'\n')* '\n'	{ _ttype = Token.SKIP; newline(); }	;ML_COMMENT	:	"/*"		(	{ LA(2)!='/' }? '*'		|	'\n' { newline(); }		|	~('*'|'\n')		)*		"*/"			{ $setType(Token.SKIP); }	;LPARENoptions {	paraphrase="'('";}	:	'('	;RPARENoptions {	paraphrase="')'";}	:	')'	;LCURLY:	'{'	;RCURLY:	'}'	;STAR:	'*'	;PLUS:	'+'	;ASSIGN	:	'='	;SEMI:	';'	;COMMA	:	','	;CHAR_LITERAL	:	'\'' (ESC|~'\'') '\''	;STRING_LITERAL	:	'"' (ESC|~'"')* '"'	;protectedESC	:	'\\'		(	'n'		|	'r'		|	't'		|	'b'		|	'f'		|	'"'		|	'\''		|	'\\'		|	'0'..'3'			(				options {					warnWhenFollowAmbig = false;				}			:	DIGIT				(					options {						warnWhenFollowAmbig = false;					}				:	DIGIT				)?			)?		|	'4'..'7'			(				options {					warnWhenFollowAmbig = false;				}			:	DIGIT			)?		)	;protectedDIGIT	:	'0'..'9'	;INT	:	(DIGIT)+	;IDoptions {	testLiterals = true;	paraphrase = "an identifier";}	:	('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*	;

⌨️ 快捷键说明

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