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

📄 java.tree.g

📁 Java写的词法/语法分析器。可生成JAVA语言或者是C++的词法和语法分析器。并可产生语法分析树和对该树进行遍历
💻 G
字号:
options {	language="Cpp";}/** Java 1.2 AST Recognizer Grammar * * Author: *	Terence Parr	parrt@magelang.com * * Version tracking now done with following ID: * * $Id: //depot/code/org.antlr/release/antlr-2.7.0/examples/cpp/java/java.tree.g#1 $ * * This grammar is in the PUBLIC DOMAIN * * BUGS */class JavaTreeParser extends TreeParser;options {	importVocab=Java;}compilationUnit	:	(packageDefinition)?		(importDefinition)*		(typeDefinition)*	;packageDefinition	:	#( PACKAGE_DEF identifier )	;importDefinition	:	#( IMPORT identifierStar )	;typeDefinition	:	#(CLASS_DEF modifiers IDENT extendsClause implementsClause objBlock )	|	#(INTERFACE_DEF modifiers IDENT extendsClause interfaceBlock )	;typeSpec	:	#(TYPE typeSpecArray)	;typeSpecArray	:	#( ARRAY_DECLARATOR typeSpecArray )	|	type	;type:	identifier	|	builtInType	;builtInType    :   "void"    |   "boolean"    |   "byte"    |   "char"    |   "short"    |   "int"    |   "float"    |   "long"    |   "double"    ;modifiers	:	#( MODIFIERS (modifier)* )	;modifier    :   "private"    |   "public"    |   "protected"    |   "static"    |   "transient"    |   "final"    |   "abstract"    |   "native"    |   "threadsafe"    |   "synchronized"    |   "const"    |   "volatile"    ;extendsClause	:	#(EXTENDS_CLAUSE (identifier)* )	;implementsClause	:	#(IMPLEMENTS_CLAUSE (identifier)* )	;interfaceBlock	:	#(	OBJBLOCK			(	methodDecl			|	variableDef			)*		)	;objBlock	:	#(	OBJBLOCK			(	ctorDef			|	methodDef			|	variableDef			|	typeDefinition			|	#(STATIC_INIT slist)			|	#(INSTANCE_INIT slist)			)*		)	;ctorDef	:	#(CTOR_DEF modifiers methodHead slist)	;methodDecl	:	#(METHOD_DEF modifiers typeSpec methodHead)	;methodDef	:	#(METHOD_DEF modifiers typeSpec methodHead (slist)?)	;variableDef	:	#(VARIABLE_DEF modifiers typeSpec variableDeclarator varInitializer)	;parameterDef	:	#(PARAMETER_DEF modifiers typeSpec IDENT )	;objectinitializer	:	#(INSTANCE_INIT slist)	;variableDeclarator	:	IDENT	|	LBRACK variableDeclarator	;varInitializer	:	#(ASSIGN initializer)	|	;initializer	:	expression	|	arrayInitializer	;arrayInitializer	:	#(ARRAY_INIT (initializer)*)	;methodHead	:	IDENT #( PARAMETERS (parameterDef)* ) (throwsClause)?	;throwsClause	:	#( "throws" (identifier)* )	;identifier	:	IDENT	|	#( DOT identifier IDENT )	;identifierStar	:	IDENT	|	#( DOT identifier (STAR|IDENT) )	;slist	:	#( SLIST (stat)* )	;stat:	typeDefinition	|	variableDef	|	expression	|	#(LABELED_STAT IDENT stat)	|	#("if" expression stat (stat)? )	|	#(	"for"			#(FOR_INIT (variableDef | elist)?)			#(FOR_CONDITION (expression)?)			#(FOR_ITERATOR (elist)?)			stat		)	|	#("while" expression stat)	|	#("do" stat expression)	|	#("break" (IDENT)? )	|	#("continue" (IDENT)? )	|	#("return" (expression)? )	|	#("switch" expression (caseGroup)*)	|	#("throw" expression)	|	#("synchronized" expression stat)	|	tryBlock	|	slist // nested SLIST	|	EMPTY_STAT	;caseGroup	:	#(CASE_GROUP (#("case" expression) | "default")+ slist)	;tryBlock	:	#( "try" slist (handler)* (#("finally" slist))? )	;handler	:	#( "catch" parameterDef slist )	;elist	:	#( ELIST (expression)* )	;expression	:	#(EXPR expr)	;expr:	#(QUESTION expr expr expr)	// trinary operator	|	#(ASSIGN expr expr)			// binary operators...	|	#(PLUS_ASSIGN expr expr)	|	#(MINUS_ASSIGN expr expr)	|	#(STAR_ASSIGN expr expr)	|	#(DIV_ASSIGN expr expr)	|	#(MOD_ASSIGN expr expr)	|	#(SR_ASSIGN expr expr)	|	#(BSR_ASSIGN expr expr)	|	#(SL_ASSIGN expr expr)	|	#(BAND_ASSIGN expr expr)	|	#(BXOR_ASSIGN expr expr)	|	#(BOR_ASSIGN expr expr)	|	#(LOR expr expr)	|	#(LAND expr expr)	|	#(BOR expr expr)	|	#(BXOR expr expr)	|	#(BAND expr expr)	|	#(NOT_EQUAL expr expr)	|	#(EQUAL expr expr)	|	#(LT_ expr expr)	|	#(GT expr expr)	|	#(LE expr expr)	|	#(GE expr expr)	|	#(SL expr expr)	|	#(SR expr expr)	|	#(BSR expr expr)	|	#(PLUS expr expr)	|	#(MINUS expr expr)	|	#(DIV expr expr)	|	#(MOD expr expr)	|	#(STAR expr expr)	|	#(INC expr)	|	#(DEC expr)	|	#(POST_INC expr)	|	#(POST_DEC expr)	|	#(BNOT expr)	|	#(LNOT expr)	|	#("instanceof" expr expr)	|	#(UNARY_MINUS expr)	|	#(UNARY_PLUS expr)	|	primaryExpression	;primaryExpression    :   IDENT    |   #(	DOT			(	expr				(	IDENT				|	arrayIndex				|	"this"				|	"class"				|	#( "new" IDENT elist )				)			|	#(ARRAY_DECLARATOR type)			|	builtInType ("class")?			)		)	|	arrayIndex	|	#(METHOD_CALL primaryExpression elist)	|	#(TYPECAST typeSpec expr)	|   newExpression	|   constant    |   "super"    |   "true"    |   "false"    |   "this"    |   "null"	|	typeSpec // type name used with instanceof	;arrayIndex	:	#(INDEX_OP primaryExpression expression)	;constant    :   NUM_INT    |   CHAR_LITERAL    |   STRING_LITERAL    |   NUM_FLOAT    ;newExpression	:	#(	"new" type			(	newArrayDeclarator (arrayInitializer)?			|	elist			)		)				;newArrayDeclarator	:	#( ARRAY_DECLARATOR (newArrayDeclarator)? (expression)? )	;

⌨️ 快捷键说明

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