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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hql.g

?? hibernate 開源框架的代碼 jar包希望大家能喜歡
?? G
?? 第 1 頁 / 共 2 頁
字號(hào):
header{//   $Id: hql.g 10163 2006-07-26 15:07:50Z steve.ebersole@jboss.com $package org.hibernate.hql.antlr;import org.hibernate.hql.ast.*;import org.hibernate.hql.ast.util.*;}/** * Hibernate Query Language Grammar * <br> * This grammar parses the query language for Hibernate (an Open Source, Object-Relational * mapping library).  A partial BNF grammar description is available for reference here: * http://www.hibernate.org/Documentation/HQLBNF * * Text from the original reference BNF is prefixed with '//##'. * @author Joshua Davis (pgmjsd@sourceforge.net) */class HqlBaseParser extends Parser;options{	exportVocab=Hql;	buildAST=true;	k=3;    // For 'not like', 'not in', etc.}tokens{	// -- HQL Keyword tokens --	ALL="all";	ANY="any";	AND="and";	AS="as";	ASCENDING="asc";	AVG="avg";	BETWEEN="between";	CLASS="class";	COUNT="count";	DELETE="delete";	DESCENDING="desc";	DOT;	DISTINCT="distinct";	ELEMENTS="elements";	ESCAPE="escape";	EXISTS="exists";	FALSE="false";	FETCH="fetch";	FROM="from";	FULL="full";	GROUP="group";	HAVING="having";	IN="in";	INDICES="indices";	INNER="inner";	INSERT="insert";	INTO="into";	IS="is";	JOIN="join";	LEFT="left";	LIKE="like";	MAX="max";	MIN="min";	NEW="new";	NOT="not";	NULL="null";	OR="or";	ORDER="order";	OUTER="outer";	PROPERTIES="properties";	RIGHT="right";	SELECT="select";	SET="set";	SOME="some";	SUM="sum";	TRUE="true";	UNION="union";	UPDATE="update";	VERSIONED="versioned";	WHERE="where";	// -- SQL tokens --	// These aren't part of HQL, but the SQL fragment parser uses the HQL lexer, so they need to be declared here.	CASE="case";	END="end";	ELSE="else";	THEN="then";	WHEN="when";	ON="on";	WITH="with";	// -- EJBQL tokens --	BOTH="both";	EMPTY="empty";	LEADING="leading";	MEMBER="member";	OBJECT="object";	OF="of";	TRAILING="trailing";	// -- Synthetic token types --	AGGREGATE;		// One of the aggregate functions (e.g. min, max, avg)	ALIAS;	CONSTRUCTOR;	CASE2;	EXPR_LIST;	FILTER_ENTITY;		// FROM element injected because of a filter expression (happens during compilation phase 2)	IN_LIST;	INDEX_OP;	IS_NOT_NULL;	IS_NULL;			// Unary 'is null' operator.	METHOD_CALL;	NOT_BETWEEN;	NOT_IN;	NOT_LIKE;	ORDER_ELEMENT;	QUERY;	RANGE;	ROW_STAR;	SELECT_FROM;	UNARY_MINUS;	UNARY_PLUS;	VECTOR_EXPR;		// ( x, y, z )	WEIRD_IDENT;		// Identifiers that were keywords when they came in.	// Literal tokens.	CONSTANT;	NUM_DOUBLE;	NUM_FLOAT;	NUM_LONG;	JAVA_CONSTANT;}{    /** True if this is a filter query (allow no FROM clause). **/	private boolean filter = false;	/**	 * Sets the filter flag.	 * @param f True for a filter query, false for a normal query.	 */	public void setFilter(boolean f) {		filter = f;	}	/**	 * Returns true if this is a filter query, false if not.	 * @return true if this is a filter query, false if not.	 */	public boolean isFilter() {		return filter;	}	/**	 * This method is overriden in the sub class in order to provide the	 * 'keyword as identifier' hack.	 * @param token The token to retry as an identifier.	 * @param ex The exception to throw if it cannot be retried as an identifier.	 */	public AST handleIdentifierError(Token token,RecognitionException ex) throws RecognitionException, TokenStreamException {		// Base implementation: Just re-throw the exception.		throw ex;	}    /**     * This method looks ahead and converts . <token> into . IDENT when     * appropriate.     */    public void handleDotIdent() throws TokenStreamException {    }	/**	 * Returns the negated equivalent of the expression.	 * @param x The expression to negate.	 */	public AST negateNode(AST x) {		// Just create a 'not' parent for the default behavior.		return ASTUtil.createParent(astFactory, NOT, "not", x);	}	/**	 * Returns the 'cleaned up' version of a comparison operator sub-tree.	 * @param x The comparison operator to clean up.	 */	public AST processEqualityExpression(AST x) throws RecognitionException {		return x;	}	public void weakKeywords() throws TokenStreamException { }	public void processMemberOf(Token n,AST p,ASTPair currentAST) { }}statement	: ( updateStatement | deleteStatement | selectStatement | insertStatement )	;updateStatement	: UPDATE^ (VERSIONED)?		optionalFromTokenFromClause		setClause		(whereClause)?	;setClause	: (SET^ assignment (COMMA! assignment)*)	;assignment	: stateField EQ^ newValue	;// "state_field" is the term used in the EJB3 sample grammar; used here for easy reference.// it is basically a property refstateField	: path	;// this still needs to be defined in the ejb3 spec; additiveExpression is currently just a best guess,// although it is highly likely I would think that the spec may limit this even more tightly.newValue	: concatenation	;deleteStatement	: DELETE^		(optionalFromTokenFromClause)		(whereClause)?	;optionalFromTokenFromClause!	: (FROM!)? f:path (a:asAlias)? {		AST #range = #([RANGE, "RANGE"], #f, #a);		#optionalFromTokenFromClause = #([FROM, "FROM"], #range);	}	;selectStatement	: queryRule {		#selectStatement = #([QUERY,"query"], #selectStatement);	}	;insertStatement	// Would be nice if we could abstract the FromClause/FromElement logic	// out such that it could be reused here; something analogous to	// a "table" rule in sql-grammars	: INSERT^ intoClause selectStatement	;intoClause	: INTO^ path { weakKeywords(); } insertablePropertySpec	;insertablePropertySpec	: OPEN! primaryExpression ( COMMA! primaryExpression )* CLOSE! {		// Just need *something* to distinguish this on the hql-sql.g side		#insertablePropertySpec = #([RANGE, "column-spec"], #insertablePropertySpec);	}	;union	: queryRule (UNION queryRule)*	;//## query://##     [selectClause] fromClause [whereClause] [groupByClause] [havingClause] [orderByClause];queryRule	: selectFrom		(whereClause)?		(groupByClause)?		(orderByClause)?		;selectFrom!	:  (s:selectClause)? (f:fromClause)? {		// If there was no FROM clause and this is a filter query, create a from clause.  Otherwise, throw		// an exception because non-filter queries must have a FROM clause.		if (#f == null) {			if (filter) {				#f = #([FROM,"{filter-implied FROM}"]);			}			else				throw new SemanticException("FROM expected (non-filter queries must contain a FROM clause)");		}					// Create an artificial token so the 'FROM' can be placed		// before the SELECT in the tree to make tree processing		// simpler.		#selectFrom = #([SELECT_FROM,"SELECT_FROM"],f,s);	}	;//## selectClause://##     SELECT DISTINCT? selectedPropertiesList | ( NEW className OPEN selectedPropertiesList CLOSE );selectClause	: SELECT^	// NOTE: The '^' after a token causes the corresponding AST node to be the root of the sub-tree.		{ weakKeywords(); }	// Weak keywords can appear immediately after a SELECT token.		(DISTINCT)? ( selectedPropertiesList | newExpression | selectObject )	;newExpression	: (NEW! path) op:OPEN^ {#op.setType(CONSTRUCTOR);} selectedPropertiesList CLOSE!	;selectObject   : OBJECT^ OPEN! identifier CLOSE!   ;//## fromClause://##    FROM className AS? identifier (  ( COMMA className AS? identifier ) | ( joinType path AS? identifier ) )*;// NOTE: This *must* begin with the "FROM" token, otherwise the sub-query rule will be ambiguous// with the expression rule.// Also note: after a comma weak keywords are allowed and should be treated as identifiers.fromClause	: FROM^ { weakKeywords(); } fromRange ( fromJoin | COMMA! { weakKeywords(); } fromRange )*	;//## joinType://##     ( ( 'left'|'right' 'outer'? ) | 'full' | 'inner' )? JOIN FETCH?;fromJoin	: ( ( ( LEFT | RIGHT ) (OUTER)? ) | FULL | INNER )? JOIN^ (FETCH)? 	  path (asAlias)? (propertyFetch)? (withClause)?	;withClause	: WITH^ logicalExpression	;fromRange	: fromClassOrOuterQueryPath	| inClassDeclaration	| inCollectionDeclaration	| inCollectionElementsDeclaration	;	fromClassOrOuterQueryPath!	: c:path { weakKeywords(); } (a:asAlias)? (p:propertyFetch)? {		#fromClassOrOuterQueryPath = #([RANGE, "RANGE"], #c, #a, #p);	}	;inClassDeclaration!	: a:alias IN! CLASS! c:path {		#inClassDeclaration = #([RANGE, "RANGE"], #c, #a);	}	;inCollectionDeclaration!    : IN! OPEN! p:path CLOSE! a:alias {        #inCollectionDeclaration = #([JOIN, "join"], [INNER, "inner"], #p, #a);	}    ;inCollectionElementsDeclaration!	: a:alias IN! ELEMENTS! OPEN! p:path CLOSE! {        #inCollectionElementsDeclaration = #([JOIN, "join"], [INNER, "inner"], #p, #a);	}    ;// Alias rule - Parses the optional 'as' token and forces an AST identifier node.asAlias	: (AS!)? alias	;alias	: a:identifier { #a.setType(ALIAS); }    ;    propertyFetch	: FETCH ALL! PROPERTIES!	;//## groupByClause://##     GROUP_BY path ( COMMA path )*;groupByClause	: GROUP^ 		"by"! expression ( COMMA! expression )*		(havingClause)?	;//## orderByClause://##     ORDER_BY selectedPropertiesList;orderByClause	: ORDER^ "by"! orderElement ( COMMA! orderElement )*	;orderElement	: expression ( ascendingOrDescending )?	;ascendingOrDescending	: ( "asc" | "ascending" )	{ #ascendingOrDescending.setType(ASCENDING); }	| ( "desc" | "descending") 	{ #ascendingOrDescending.setType(DESCENDING); }	;//## havingClause://##     HAVING logicalExpression;havingClause	: HAVING^ logicalExpression	;//## whereClause://##     WHERE logicalExpression;whereClause	: WHERE^ logicalExpression	;//## selectedPropertiesList://##     ( path | aggregate ) ( COMMA path | aggregate )*;selectedPropertiesList	: aliasedExpression ( COMMA! aliasedExpression )*	;	aliasedExpression	: expression ( AS^ identifier )?	;// expressions// Note that most of these expressions follow the pattern//   thisLevelExpression ://       nextHigherPrecedenceExpression//           (OPERATOR nextHigherPrecedenceExpression)*// which is a standard recursive definition for a parsing an expression.//// Operator precedence in HQL// lowest  --> ( 7)  OR//             ( 6)  AND, NOT//             ( 5)  equality: ==, <>, !=, is

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频在线观看91| 粉嫩aⅴ一区二区三区四区 | 91久久香蕉国产日韩欧美9色| 亚洲aⅴ怡春院| 国产精品热久久久久夜色精品三区 | 国产一区二区精品在线观看| 亚洲午夜精品在线| 中文字幕 久热精品 视频在线| 91精品国产aⅴ一区二区| 91麻豆精品一区二区三区| 激情五月播播久久久精品| 亚洲国产一区在线观看| 国产精品久久777777| 日韩美女一区二区三区四区| 欧洲在线/亚洲| 99视频热这里只有精品免费| 国产成人8x视频一区二区| 精品一区二区日韩| 日韩精品免费视频人成| 亚洲制服丝袜在线| 亚洲免费成人av| 中文字幕字幕中文在线中不卡视频| 久久精品男人天堂av| 欧美大白屁股肥臀xxxxxx| 欧美精品久久一区| 在线中文字幕不卡| 狠狠色综合色综合网络| 色狠狠一区二区三区香蕉| 成人国产电影网| 国产suv一区二区三区88区| 麻豆一区二区三区| 日韩va欧美va亚洲va久久| 亚洲国产一区二区视频| 亚洲精品免费在线观看| 国产精品人成在线观看免费| 国产精品家庭影院| 国产精品国产三级国产普通话99| 国产视频一区二区三区在线观看 | 精品奇米国产一区二区三区| 欧美一区国产二区| 欧美一级日韩免费不卡| 日韩欧美色电影| 日韩欧美一区二区在线视频| 日韩欧美一区电影| 欧美精品一区二区三区很污很色的| 日韩精品一区二区三区在线| 亚洲精品在线网站| 久久久久一区二区三区四区| 中文字幕av资源一区| 亚洲日本va午夜在线电影| 亚洲激情图片小说视频| 亚洲在线中文字幕| 日韩福利电影在线观看| 毛片av一区二区三区| 国产精品99久久久| 99久久久无码国产精品| 欧洲一区二区三区在线| 日韩一区二区免费视频| 久久久青草青青国产亚洲免观| 国产精品色在线| 亚洲精选在线视频| 日本成人中文字幕| 国产精品自拍毛片| 99国产麻豆精品| 7777精品伊人久久久大香线蕉 | 欧美精品第1页| 日韩精品一区二区三区四区视频 | 午夜精品久久久久久久久| 视频一区二区三区中文字幕| 蜜桃久久精品一区二区| jlzzjlzz亚洲日本少妇| 欧美日韩综合色| 久久精品亚洲国产奇米99| 亚洲免费视频成人| 精品一区免费av| 色哟哟日韩精品| 日韩精品一区国产麻豆| 亚洲色图在线播放| 美国三级日本三级久久99| www.日韩大片| 日韩欧美中文字幕公布| 成人欧美一区二区三区黑人麻豆| 日韩高清在线一区| 成人蜜臀av电影| 日韩一二在线观看| 亚洲精品成人悠悠色影视| 久久aⅴ国产欧美74aaa| 欧洲视频一区二区| 国产日产欧美一区二区视频| 视频一区二区三区入口| aaa亚洲精品| 久久先锋影音av鲁色资源网| 亚洲超碰97人人做人人爱| 成人高清免费在线播放| 日韩欧美第一区| 亚洲国产aⅴ成人精品无吗| 国产一区二区视频在线| 欧美日韩在线直播| 亚洲欧美福利一区二区| 国产一区高清在线| 欧美日韩国产综合草草| 亚洲色图都市小说| 粉嫩在线一区二区三区视频| 精品久久久久久久久久久久久久久 | youjizz久久| 久久久精品国产99久久精品芒果| 首页欧美精品中文字幕| 色偷偷一区二区三区| 国产欧美日韩亚州综合 | 亚洲色图视频免费播放| 国产成人超碰人人澡人人澡| 亚洲精品国产第一综合99久久 | 国产清纯美女被跳蛋高潮一区二区久久w | 大胆亚洲人体视频| www久久精品| 奇米亚洲午夜久久精品| 欧美精品视频www在线观看| 夜夜嗨av一区二区三区网页| 国产99精品在线观看| 久久久综合精品| 国产精品资源网站| 久久综合av免费| 韩国欧美国产1区| 日韩三级电影网址| 久久电影网站中文字幕| 欧美一区二区在线观看| 免费成人小视频| 日韩欧美成人午夜| 国产综合久久久久久久久久久久| 日韩一本二本av| 激情综合五月婷婷| 久久亚洲精华国产精华液| 国内精品国产成人国产三级粉色| 日韩欧美www| 国产在线精品一区二区三区不卡| 欧美xxxxxxxx| 精品一区二区精品| 国产亚洲一区字幕| 99久久综合色| 一区二区欧美国产| 欧美天天综合网| 日本特黄久久久高潮| 日韩欧美另类在线| 国产一区二区三区av电影| 国产欧美一区二区三区沐欲| 国产成人免费视频网站 | 国产午夜精品美女毛片视频| 东方aⅴ免费观看久久av| 中文字幕中文在线不卡住| 91毛片在线观看| 亚洲福利视频三区| 欧美一区二区三区视频免费播放| 久久精品噜噜噜成人88aⅴ| 久久久99久久| 色国产精品一区在线观看| 午夜在线电影亚洲一区| 欧美成人精品二区三区99精品| 国产精品一级片在线观看| 最新国产精品久久精品| 欧美午夜精品免费| 久久精品国产一区二区三区免费看| 国产欧美精品一区二区色综合朱莉| 99久久久免费精品国产一区二区| 亚洲国产视频一区| 精品国产乱码久久| 9l国产精品久久久久麻豆| 亚洲成人资源在线| 久久女同性恋中文字幕| 99国产欧美另类久久久精品| 日韩成人午夜精品| 欧美激情一区二区三区蜜桃视频| 色欧美片视频在线观看在线视频| 婷婷久久综合九色综合伊人色| 久久亚洲一级片| 欧美午夜不卡在线观看免费| 国内精品伊人久久久久av一坑| 亚洲欧美国产毛片在线| 日韩欧美国产系列| 色av综合在线| 激情综合网av| 伊人色综合久久天天| 久久综合久久久久88| 欧美日韩精品免费观看视频| 成人做爰69片免费看网站| 亚洲成av人影院| 日本一区二区动态图| 欧美一区二区三区的| 91免费国产在线观看| 国产一区在线不卡| 午夜影院久久久| 国产精品久久久久久久久快鸭 | 91小视频免费观看| 美女一区二区久久| 怡红院av一区二区三区| 国产亚洲欧美日韩俺去了| 69堂国产成人免费视频| 99久久国产综合精品麻豆| 国内外成人在线视频| 午夜成人免费视频| 亚洲四区在线观看|