亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? java-expression.g

?? linux下建立JAVA虛擬機的源碼KAFFE
?? G
字號:
/* * This grammar is derived from the Java 1.3 Recognizer * (http://www.antlr.org/grammar/java/java.g) by Mitchell, Parr, Lilley, * Stanchfield, Mohnen, Williams, Jacobs, Messick and Pybus, Version  * 1.21. * * This grammar recognizes simple Java expressions. The following  * language elements are NOT supported: * * - type casts to non-primitive types * - method calls * - constructor calls * - array access * - comma expressions * - increment and decrement operators (both prefix/postfix) * - expressions involving constant classes (Abc.class) */header {    package gnu.classpath.tools.gjdoc.expr; }class JavaRecognizer extends Parser;options {	k = 2;                           // two token lookahead	exportVocab=Java;                // Call its vocabulary "Java"	codeGenMakeSwitchThreshold = 2;  // Some optimizations	codeGenBitsetTestThreshold = 3;	defaultErrorHandler = false;     // Don't generate parser error handlers	buildAST = true;}tokens {	BLOCK; MODIFIERS; OBJBLOCK; SLIST; CTOR_DEF; METHOD_DEF; VARIABLE_DEF;	INSTANCE_INIT; STATIC_INIT; TYPE; CLASS_DEF; INTERFACE_DEF;	PACKAGE_DEF; ARRAY_DECLARATOR; EXTENDS_CLAUSE; IMPLEMENTS_CLAUSE;	PARAMETERS; PARAMETER_DEF; LABELED_STAT; TYPECAST; INDEX_OP;	POST_INC; POST_DEC; METHOD_CALL; EXPR; ARRAY_INIT;	IMPORT; UNARY_MINUS; UNARY_PLUS; CASE_GROUP; ELIST; FOR_INIT; FOR_CONDITION;	FOR_ITERATOR; EMPTY_STAT; FINAL="final"; ABSTRACT="abstract";	STRICTFP="strictfp"; SUPER_CTOR_CALL; CTOR_CALL;}// A builtin type specification is a builtin type with possible brackets// afterwards (which would make it an array type).builtInTypeSpec[boolean addImagNode] returns [Type t = null]	:	t=builtInType (lb:LBRACK^ {#lb.setType(ARRAY_DECLARATOR);} RBRACK!)*		{			if ( addImagNode ) {				#builtInTypeSpec = #(#[TYPE,"TYPE"], #builtInTypeSpec);			}		}	;// A type name. which is either a (possibly qualified) class name or//   a primitive (builtin) typetype returns [Type t]	:	t=builtInType	;// The primitive types.builtInType returns [Type t = null]	:	"void" {t=Type.VOID;}	|	"boolean" {t=Type.BOOLEAN;}	|	"byte" {t=Type.BYTE;}	|	"char" {t=Type.CHAR;}	|	"short" {t=Type.SHORT;}	|	"int" {t=Type.INTEGER;}	|	"float"{t=Type.FLOAT;}	|	"long" {t=Type.LONG;}	|	"double" {t=Type.DOUBLE;}	|	"String" {t=Type.STRING;}	;// A (possibly-qualified) java identifier.  We start with the first IDENT//   and expand its name by adding dots and following IDENTSidentifier returns [String s = null;]	:	i:IDENT {s=i.getText();}  ( DOT^ i2:IDENT {s+="."+i2.getText();} )*	;expression returns [Expression e = null]    :   e=conditionalExpression EOF!    ;// conditional test (level 12)conditionalExpression returns [Expression e = null] { Expression a,b,c; }	:	e=logicalOrExpression		( QUESTION^ b=conditionalExpression COLON! c=conditionalExpression {e=new ConditionalExpression(e,b,c);} )?	;// logical or (||)  (level 11)logicalOrExpression returns [Expression e = null] { Expression a,b; }	:	e=logicalAndExpression (LOR^ b=logicalAndExpression {e=new LogicalOrExpression(e,b);})*	;// logical and (&&)  (level 10)logicalAndExpression returns [Expression e = null] { Expression a,b; }	:	e=inclusiveOrExpression (LAND^ b=inclusiveOrExpression {e=new LogicalAndExpression(e,b);})*	;// bitwise or non-short-circuiting or (|)  (level 9)inclusiveOrExpression returns [Expression e = null] { Expression a,b; }	:	e=exclusiveOrExpression (BOR^ b=exclusiveOrExpression {e=new InclusiveOrExpression(e,b);})*	;// exclusive or (^)  (level 8)exclusiveOrExpression returns [Expression e = null] { Expression a,b; }	:	e=andExpression (BXOR^ b=andExpression {e=new ExclusiveOrExpression(e,b);})*	;// bitwise or non-short-circuiting and (&)  (level 7)andExpression returns [Expression e = null] { Expression a,b; }	:	e=equalityExpression (BAND^ b=equalityExpression {e=new AndExpression(e,b);})*	;// equality/inequality (==/!=) (level 6)equalityExpression returns [Expression e = null] { Expression a,b; }	:	e=relationalExpression ((NOT_EQUAL^ a=relationalExpression {e=new NotEqualExpression(e,a);} | EQUAL^ a=relationalExpression {e=new EqualExpression(e,a);}))*	;// boolean relational expressions (level 5)relationalExpression returns [Expression e = null] { Expression a,b; }	:	e=shiftExpression		(	(	(	LT^ a=shiftExpression {e=new LessThanExpression(e,a);}				|	GT^ a=shiftExpression {e=new GreaterThanExpression(e,a);}				|	LE^ a=shiftExpression {e=new LessThanOrEqualExpression(e,a);}				|	GE^ a=shiftExpression {e=new GreaterThanOrEqualExpression(e,a);}				)							)*		)	;// bit shift expressions (level 4)shiftExpression returns [Expression e = null] { Expression a,b; }	:	e=additiveExpression ((SL^ a=additiveExpression {e=new ShiftLeftExpression(e,a);} | SR^ a=additiveExpression {e=new ShiftRightExpression(e,a);} | BSR^ a=additiveExpression {e=new BitShiftRightExpression(e,a);}))*	;// binary addition/subtraction (level 3)additiveExpression returns [Expression e = null] { Expression a,b; }   :	e=multiplicativeExpression ((PLUS^ a=multiplicativeExpression {e=new AdditionExpression(e,a);} | MINUS^ a=multiplicativeExpression {e=new SubtractionExpression(e,a);}))*	;// multiplication/division/modulo (level 2)multiplicativeExpression returns [Expression e = null] { Expression a,b; }	:	e=unaryExpression ((STAR^ a=unaryExpression {e=new MultiplicationExpression(e,a);} | DIV^ a=unaryExpression {e=new DivisionExpression(e,a);} | MOD^ a=unaryExpression {e=new ModuloExpression(e,a);} ))*	;unaryExpression returns [Expression e = null] { Expression a,b; }	:	MINUS^ {#MINUS.setType(UNARY_MINUS);} a=unaryExpression {e=new NegateExpression(a);}	|	PLUS^  {#PLUS.setType(UNARY_PLUS);} e=unaryExpression	|	e=unaryExpressionNotPlusMinus	;unaryExpressionNotPlusMinus returns [Expression e = null] { Expression a; Type t; }	:	BNOT^ a=unaryExpression {e=new NotExpression(a);}	|	LNOT^ a=unaryExpression {e=new LogicalNotExpression(a);}		// use predicate to skip cases like: (int.class)    |   (LPAREN builtInTypeSpec[true] RPAREN) =>        lpb:LPAREN^ {#lpb.setType(TYPECAST);} t=builtInTypeSpec[true] RPAREN!        a=unaryExpression {e=new TypeCastExpression(t,a);}    |	e=primaryExpression	;// the basic element of an expressionprimaryExpression returns [Expression e = null; String i = null;]	:	e=constant	|	i=identifier {e=new IdentifierExpression(i);}	|	"true" { e=new ConstantBoolean(true); }	|	"false" { e=new ConstantBoolean(false); }	|	"null" { e=new ConstantNull(); }    |	LPAREN! e=conditionalExpression RPAREN!	;/** Match a, a.b.c refs */identPrimary returns [Expression e = null]	:	IDENT		(            options {				// .ident could match here or in postfixExpression.				// We do want to match here.  Turn off warning.				greedy=true;			}		:	DOT^ IDENT		)*    ;constant returns [Expression e = null]	:	l1:NUM_INT {e=new ConstantInteger(l1.getText());}	|	l2:CHAR_LITERAL {e=new ConstantChar(l2.getText());}	|	l3:STRING_LITERAL {e=new ConstantString(l3.getText().substring(1, l3.getText().length()-1)); }	|	l4:NUM_FLOAT {e=new ConstantFloat(l4.getText());}	|	l5:NUM_LONG {e=new ConstantLong(l5.getText());}	|	l6:NUM_DOUBLE {e=new ConstantDouble(l6.getText());}	;//----------------------------------------------------------------------------// The Java scanner//----------------------------------------------------------------------------class JavaLexer extends Lexer;options {	exportVocab=Java;      // call the vocabulary "Java"	testLiterals=false;    // don't automatically test for literals	k=4;                   // four characters of lookahead	charVocabulary='\u0003'..'\uFFFF';	// without inlining some bitset tests, couldn't do unicode;	// I need to make ANTLR generate smaller bitsets; see	// bottom of JavaLexer.java	codeGenBitsetTestThreshold=20;}// OPERATORSQUESTION		:	'?'		;LPAREN			:	'('		;RPAREN			:	')'		;LBRACK			:	'['		;RBRACK			:	']'		;LCURLY			:	'{'		;RCURLY			:	'}'		;COLON			:	':'		;COMMA			:	','		;//DOT 			:	'.'		;ASSIGN			:	'='		;EQUAL			:	"=="	;LNOT			:	'!'		;BNOT			:	'~'		;NOT_EQUAL		:	"!="	;DIV				:	'/'		;DIV_ASSIGN		:	"/="	;PLUS			:	'+'		;PLUS_ASSIGN		:	"+="	;INC				:	"++"	;MINUS			:	'-'		;MINUS_ASSIGN	:	"-="	;DEC				:	"--"	;STAR			:	'*'		;STAR_ASSIGN		:	"*="	;MOD				:	'%'		;MOD_ASSIGN		:	"%="	;SR				:	">>"	;SR_ASSIGN		:	">>="	;BSR				:	">>>"	;BSR_ASSIGN		:	">>>="	;GE				:	">="	;GT				:	">"		;SL				:	"<<"	;SL_ASSIGN		:	"<<="	;LE				:	"<="	;LT				:	'<'		;BXOR			:	'^'		;BXOR_ASSIGN		:	"^="	;BOR				:	'|'		;BOR_ASSIGN		:	"|="	;LOR				:	"||"	;BAND			:	'&'		;BAND_ASSIGN		:	"&="	;LAND			:	"&&"	;SEMI			:	';'		;// Whitespace -- ignoredWS	:	(	' '		|	'\t'		|	'\f'			// handle newlines		|	(	options {generateAmbigWarnings=false;}			:	"\r\n"  // Evil DOS			|	'\r'    // Macintosh			|	'\n'    // Unix (the right way)			)			{ newline(); }		)+		{ _ttype = Token.SKIP; }	;// Single-line commentsSL_COMMIT	:	"//"		(~('\n'|'\r'))* ('\n'|'\r'('\n')?)		{$setType(Token.SKIP); newline();}	;// multiple-line commentsML_COMMENT	:	"/*"		(	/*	'\r' '\n' can be matched in one alternative or by matching				'\r' in one iteration and '\n' in another.  I am trying to				handle any flavor of newline that comes in, but the language				that allows both "\r\n" and "\r" and "\n" to all be valid				newline is ambiguous.  Consequently, the resulting grammar				must be ambiguous.  I'm shutting this warning off.			 */			options {				generateAmbigWarnings=false;			}		:			{ LA(2)!='/' }? '*'		|	'\r' '\n'		{newline();}		|	'\r'			{newline();}		|	'\n'			{newline();}		|	~('*'|'\n'|'\r')		)*		"*/"		{$setType(Token.SKIP);}	;// character literalsCHAR_LITERAL	:	'\'' ( ESC | ~('\''|'\n'|'\r'|'\\') ) '\''	;// string literalsSTRING_LITERAL	:	'"' (ESC|~('"'|'\\'|'\n'|'\r'))* '"'	;// escape sequence -- note that this is protected; it can only be called//   from another lexer rule -- it will not ever directly return a token to//   the parser// There are various ambiguities hushed in this rule.  The optional// '0'...'9' digit matches should be matched here rather than letting// them go back to STRING_LITERAL to be matched.  ANTLR does the// right thing by matching immediately; hence, it's ok to shut off// the FOLLOW ambig warnings.protectedESC	:	'\\'		(	'n'		|	'r'		|	't'		|	'b'		|	'f'		|	'"'		|	'\''		|	'\\'		|	('u')+ HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT		|	'0'..'3'			(				options {					warnWhenFollowAmbig = false;				}			:	'0'..'7'				(					options {						warnWhenFollowAmbig = false;					}				:	'0'..'7'				)?			)?		|	'4'..'7'			(				options {					warnWhenFollowAmbig = false;				}			:	'0'..'7'			)?		)	;// hexadecimal digit (again, note it's protected!)protectedHEX_DIGIT	:	('0'..'9'|'A'..'F'|'a'..'f')	;// a dummy rule to force vocabulary to be all characters (except special//   ones that ANTLR uses internally (0 to 2)protectedVOCAB	:	'\3'..'\377'	;// an identifier.  Note that testLiterals is set to true!  This means// that after we match the rule, we look in the literals table to see// if it's a literal or really an identiferIDENT	options {testLiterals=true;}	:	('a'..'z'|'A'..'Z'|'_'|'$') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'$')*	;// a numeric literalNUM_INT	{boolean isDecimal=false; Token t=null;}    :   '.' {_ttype = DOT;}            (	('0'..'9')+ (EXPONENT)? (f1:FLOAT_SUFFIX {t=f1;})?                {				if (t != null && t.getText().toUpperCase().indexOf('F')>=0) {                	_ttype = NUM_FLOAT;				}				else {                	_ttype = NUM_DOUBLE; // assume double				}				}            )?	|	(	'0' {isDecimal = true;} // special case for just '0'			(	('x'|'X')				(											// hex					// the 'e'|'E' and float suffix stuff look					// like hex digits, hence the (...)+ doesn't					// know when to stop: ambig.  ANTLR resolves					// it correctly by matching immediately.  It					// is therefor ok to hush warning.					options {						warnWhenFollowAmbig=false;					}				:	HEX_DIGIT				)+			|	//float or double with leading zero				(('0'..'9')+ ('.'|EXPONENT|FLOAT_SUFFIX)) => ('0'..'9')+			|	('0'..'7')+									// octal			)?		|	('1'..'9') ('0'..'9')*  {isDecimal=true;}		// non-zero decimal		)		(	('l'|'L') { _ttype = NUM_LONG; }		// only check to see if it's a float if looks like decimal so far		|	{isDecimal}?            (   '.' ('0'..'9')* (EXPONENT)? (f2:FLOAT_SUFFIX {t=f2;})?            |   EXPONENT (f3:FLOAT_SUFFIX {t=f3;})?            |   f4:FLOAT_SUFFIX {t=f4;}            )            {			if (t != null && t.getText().toUpperCase() .indexOf('F') >= 0) {                _ttype = NUM_FLOAT;			}            else {	           	_ttype = NUM_DOUBLE; // assume double			}			}        )?	;// a couple protected methods to assist in matching floating point numbersprotectedEXPONENT	:	('e'|'E') ('+'|'-')? ('0'..'9')+	;protectedFLOAT_SUFFIX	:	'f'|'F'|'d'|'D'	;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线不卡国产视频| www.爱久久.com| 夫妻av一区二区| 51久久夜色精品国产麻豆| 国产精品第一页第二页第三页| 久久久精品2019中文字幕之3| 亚洲综合视频网| 国产成人av福利| 欧美一级久久久久久久大片| 亚洲欧美电影一区二区| 国产一区二区不卡在线 | 免费成人性网站| 91啪九色porn原创视频在线观看| 日韩小视频在线观看专区| 亚洲最新视频在线播放| 成人国产精品免费网站| 久久香蕉国产线看观看99| 热久久一区二区| 欧美日免费三级在线| 亚洲免费在线观看| 成人av网站在线| 久久你懂得1024| 国产一区二区主播在线| 精品久久久网站| 久久精品国产77777蜜臀| 欧美伦理电影网| 石原莉奈一区二区三区在线观看| 成人永久aaa| 欧美激情资源网| youjizz国产精品| 中文字幕亚洲不卡| 91女厕偷拍女厕偷拍高清| 1000部国产精品成人观看| 99热这里都是精品| 亚洲天堂福利av| 欧洲一区二区三区免费视频| 亚洲狠狠爱一区二区三区| 69久久夜色精品国产69蝌蚪网| 一区二区三区色| 在线国产电影不卡| 亚洲777理论| 欧美成人猛片aaaaaaa| 麻豆精品新av中文字幕| 精品免费99久久| 国产凹凸在线观看一区二区| 国产精品毛片大码女人| 色婷婷av久久久久久久| 亚洲第一会所有码转帖| 精品日韩一区二区三区| 国产精品一区三区| 中文字幕一区二区三区四区不卡 | 亚洲成国产人片在线观看| 欧美高清dvd| 毛片不卡一区二区| 日本一区二区免费在线观看视频 | 菠萝蜜视频在线观看一区| 自拍偷自拍亚洲精品播放| 欧美区一区二区三区| 国产一区二区伦理片| 亚洲人成电影网站色mp4| 欧美军同video69gay| 国产精品一区二区x88av| 有坂深雪av一区二区精品| 欧美一区二区在线视频| 国产一二三精品| 一区二区三区影院| 日韩三级高清在线| 91啪九色porn原创视频在线观看| 午夜伦理一区二区| 国产日韩欧美在线一区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 性欧美大战久久久久久久久| 久久久蜜桃精品| 欧美精品三级日韩久久| 成人亚洲一区二区一| 日日嗨av一区二区三区四区| 国产精品免费看片| 欧美刺激午夜性久久久久久久| 国产精品亚洲专一区二区三区| 亚洲人吸女人奶水| 精品成人免费观看| 欧美区一区二区三区| av高清久久久| 国产精品一区二区免费不卡| 香蕉乱码成人久久天堂爱免费| 精品三级在线看| 91精品免费在线观看| 99久久国产免费看| 国产在线精品国自产拍免费| 日韩高清在线电影| 亚洲免费观看高清完整版在线 | 久久综合色一综合色88| 欧美日韩和欧美的一区二区| 成人va在线观看| 国产盗摄一区二区| 久久精品国产**网站演员| 婷婷中文字幕综合| 亚洲一区二区四区蜜桃| 亚洲情趣在线观看| 亚洲国产成人在线| 久久久久久9999| 久久网站热最新地址| 欧美大尺度电影在线| 欧美xfplay| 欧美一区二区三区视频免费播放| 91免费版pro下载短视频| 99久久免费精品| 欧美日本精品一区二区三区| av亚洲精华国产精华精| 成人免费观看视频| 成人自拍视频在线| 成年人国产精品| 不卡av电影在线播放| 91麻豆国产福利在线观看| 成人av午夜电影| 91美女蜜桃在线| 在线观看视频欧美| 这里只有精品视频在线观看| 欧美日韩精品一区二区三区| 欧美日韩一区二区不卡| 欧美丰满少妇xxxxx高潮对白| 欧美三区在线观看| 欧美一区二区不卡视频| 欧美精品一区二区三区很污很色的| 欧美一区二区成人| 久久久欧美精品sm网站| 中文字幕在线免费不卡| 亚洲一区二区三区在线播放| 日韩电影在线看| 国产在线乱码一区二区三区| 国产成人午夜99999| 91在线国内视频| 欧美日韩二区三区| 日韩精品一区二区三区老鸭窝 | 美女被吸乳得到大胸91| 国产专区欧美精品| 99国产精品久久久久久久久久| 成人的网站免费观看| 欧美日韩1234| 国产欧美日韩一区二区三区在线观看| 日韩欧美三级在线| 国产精品网站导航| 亚洲成人777| 国产成人亚洲综合色影视| 色偷偷一区二区三区| 日韩免费高清av| 亚洲欧美在线视频| 美女尤物国产一区| 成人一区在线观看| 91精品国产91久久综合桃花| 国产欧美一区二区精品性| 亚洲一区二区欧美日韩 | 日韩高清不卡一区二区三区| 国产一区视频导航| 97久久精品人人爽人人爽蜜臀| 欧洲色大大久久| 久久亚洲综合av| 亚洲精品免费在线观看| 国产露脸91国语对白| 欧美日韩精品福利| 国产精品福利av| 久久精品国产亚洲aⅴ| 91麻豆福利精品推荐| 久久嫩草精品久久久精品| 亚洲h在线观看| av电影在线观看完整版一区二区| 欧美日韩日日骚| 亚洲欧美一区二区视频| 国产麻豆一精品一av一免费| 91精品国产综合久久小美女| 亚洲男人的天堂一区二区| 国产成人综合在线观看| 欧美一区二区三区视频| 亚洲精品欧美激情| www.激情成人| 国产欧美日韩精品在线| 精品在线视频一区| 91精品国产福利在线观看| 亚洲永久免费av| 色综合久久久久久久| 国产三级一区二区三区| 久久国产精品露脸对白| 制服丝袜一区二区三区| 亚洲精品一二三四区| 99在线精品一区二区三区| 久久影院视频免费| 国产在线精品一区二区夜色| 欧美一区二区日韩一区二区| 午夜视频一区二区三区| 在线亚洲免费视频| 亚洲精品国产a久久久久久| 99r精品视频| 国产精品乱码久久久久久| 国产在线乱码一区二区三区| 日韩一区二区免费在线观看| 麻豆一区二区三区| 日韩欧美国产wwwww| 久久草av在线| 国产视频在线观看一区二区三区| 美日韩黄色大片|