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

📄 expr.g

📁 Java写的词法/语法分析器。可生成JAVA语言或者是C++的词法和语法分析器。并可产生语法分析树和对该树进行遍历
💻 G
字号:
options {	language="Cpp";}{#include <iostream>}class ExprParser extends Parser;options {	codeGenMakeSwitchThreshold = 3;	codeGenBitsetTestThreshold = 4;	buildAST=true;//	ASTLabelType = "antlr.CommonAST"; // change default of "AST"}expr : assignExpr EOF! ;assignExpr	:	addExpr		(			ASSIGN^			assignExpr 		)?	;addExpr	:	multExpr 		(			pm:PLUS_MINUS^			me:multExpr			exception 				catch [ ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex ] 				{ 					std::cout << "Caught error in addExpr" << std::endl;					reportError(ex.toString()); 				}		)*	;multExpr	:	postfixExpr		(			MULT_DIV^			postfixExpr		)*	;postfixExpr	:	(id:ID LPAREN)=>		// Matches function call syntax like "id(arg,arg)" 		id2:ID^		(         parenArgs		)?	|	atom	;parenArgs	:	      LPAREN!      (         assignExpr         (            COMMA!	        assignExpr         )*      )?      RPAREN!	;atom	:	ID	|	INT	|	CHAR_LITERAL 	|	STRING_LITERAL	|	LPAREN! assignExpr RPAREN!	;class ExprLexer extends Lexer;WS_	:	(' '	|	'\t'	|	'\n'	|	'\r')		{ _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; }	;LPAREN:	'('	;RPAREN:	')'	;PLUS_MINUS:	'+' | '-'	;MULT_DIV : '*' | '/'   ;ASSIGN :	'='	;COMMA : ','   ;   CHAR_LITERAL	:	'\'' (ESC|~'\'') '\''	;STRING_LITERAL	:	'"' (ESC|~'"')* '"'	;protectedESC	:	'\\'		(	'n'		|	'r'		|	't'		|	'b'		|	'f'		|	'"'		|	'\''		|	'\\'		|	('0'..'3')			(				options {					warnWhenFollowAmbig = false;				}			:	('0'..'9')				(						options {						warnWhenFollowAmbig = false;					}				:	'0'..'9'				)?			)?		|	('4'..'7')			(				options {					warnWhenFollowAmbig = false;				}			:	('0'..'9')			)?		)	;protectedDIGIT	:	'0'..'9'	;INT 	: (DIGIT)+	;IDoptions {	testLiterals = true;}	:	('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*	;

⌨️ 快捷键说明

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