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

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

?? hql.g

?? hibernate 開源框架的代碼 jar包希望大家能喜歡
?? G
?? 第 1 頁 / 共 2 頁
字號:
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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品九九99久久| 欧美一级搡bbbb搡bbbb| 国产黄色精品网站| 精品一区二区三区在线播放| 日韩成人一区二区三区在线观看| 一区二区三区欧美激情| 一级女性全黄久久生活片免费| 国产福利视频一区二区三区| 日韩不卡一二三区| 亚洲一区二区三区四区不卡| 亚洲老司机在线| 亚洲日韩欧美一区二区在线| 亚洲欧美福利一区二区| 亚洲欧美日韩国产另类专区| 亚洲www啪成人一区二区麻豆| 日韩综合在线视频| 韩国一区二区视频| 大陆成人av片| 在线观看av一区二区| 在线电影国产精品| 日韩午夜av一区| 国产欧美一区二区精品久导航 | 亚洲欧美成aⅴ人在线观看| 亚洲日本电影在线| 日韩电影在线一区二区| 国产在线播放一区三区四| 粉嫩久久99精品久久久久久夜 | 亚洲成在人线在线播放| 久久精品99国产精品| hitomi一区二区三区精品| 欧美肥大bbwbbw高潮| 久久久久久久久久久久久久久99| 国产精品乱子久久久久| 亚洲成人免费电影| 国产精品白丝jk白祙喷水网站| 日本大香伊一区二区三区| 日韩一区二区三区四区| 国产精品不卡在线观看| 午夜国产精品一区| 成人性生交大合| 日韩欧美你懂的| 亚洲欧美精品午睡沙发| 国产尤物一区二区在线| 欧美美女bb生活片| 亚洲欧洲无码一区二区三区| 免费欧美日韩国产三级电影| 91麻豆高清视频| 久久久久97国产精华液好用吗| 亚洲午夜一区二区| 97久久精品人人做人人爽50路| 精品久久久久久无| 亚洲成人黄色影院| 色综合久久久网| 国产亲近乱来精品视频| 免费人成网站在线观看欧美高清| 99视频国产精品| 国产午夜一区二区三区| 久久国产日韩欧美精品| 欧美老肥妇做.爰bbww视频| 亚洲视频狠狠干| 高清不卡一区二区| 国产亚洲综合性久久久影院| 蜜臀久久久99精品久久久久久| 在线视频欧美区| 亚洲男人的天堂一区二区| 成人三级伦理片| 久久久综合九色合综国产精品| 蜜桃精品视频在线| 欧美一区二区三区在线观看 | 亚洲狠狠丁香婷婷综合久久久| 国精产品一区一区三区mba视频| 欧美一区二区三区视频在线| 香蕉成人啪国产精品视频综合网| 欧美日韩在线电影| 亚洲成va人在线观看| 欧美日韩黄色影视| 免费在线观看视频一区| 欧美一二三四在线| 久久精品av麻豆的观看方式| 欧美精品一区二| 国产成人午夜99999| 亚洲欧洲国产专区| 色呦呦日韩精品| 亚洲午夜影视影院在线观看| 欧美久久久一区| 激情久久五月天| 国产精品区一区二区三区| 99视频一区二区| 午夜视频一区二区| 日韩精品一区二区在线观看| 国产一区二区三区免费看| 中文字幕精品—区二区四季| 91在线免费播放| 天天色综合天天| 久久久久久一级片| 91久久免费观看| 日韩成人一级片| 国产精品免费视频一区| 91精品1区2区| 韩国视频一区二区| 国产精品久久久久四虎| 欧美日韩亚洲综合一区二区三区| 男女性色大片免费观看一区二区| 国产欧美日韩卡一| 欧美在线影院一区二区| 久久99热国产| 亚洲激情综合网| 欧美一区二区成人| heyzo一本久久综合| 日本欧洲一区二区| 亚洲欧美电影院| 26uuu精品一区二区三区四区在线| 高清免费成人av| 日韩高清不卡一区二区| 中文字幕一区二区三区乱码在线| 欧美日韩三级视频| 成人永久看片免费视频天堂| 免费人成在线不卡| 伊人婷婷欧美激情| 精品处破学生在线二十三| 91麻豆成人久久精品二区三区| 国产真实乱对白精彩久久| 亚洲一卡二卡三卡四卡五卡| 中文一区二区完整视频在线观看| 欧美福利视频一区| 91福利在线播放| 国产激情一区二区三区| 日本午夜精品视频在线观看 | 中文字幕亚洲综合久久菠萝蜜| 亚洲国产高清在线观看视频| 91麻豆精品国产| 在线中文字幕一区| 97成人超碰视| 成人av动漫在线| 国产成人av影院| 韩国三级中文字幕hd久久精品| 婷婷成人激情在线网| 亚洲一区二区三区爽爽爽爽爽| 国产精品萝li| 国产精品三级在线观看| 国产欧美日韩三级| 国产午夜精品一区二区三区嫩草 | 高清成人免费视频| 国产精品一卡二卡| 韩国av一区二区三区在线观看| 婷婷久久综合九色国产成人| 亚洲高清在线视频| 亚洲国产精品久久不卡毛片 | 国内精品不卡在线| 狠狠狠色丁香婷婷综合激情| 久久99精品久久久久婷婷| 麻豆一区二区在线| 久久99精品久久久| 国产主播一区二区| 国产99久久久国产精品潘金| 高清在线观看日韩| 91丨porny丨国产| 91国产视频在线观看| 欧美制服丝袜第一页| 欧美剧情片在线观看| 91精品国产综合久久小美女| 精品日韩一区二区三区免费视频| 精品欧美一区二区三区精品久久| 久久综合中文字幕| 日本一区二区不卡视频| 亚洲欧美偷拍另类a∨色屁股| 亚洲欧美偷拍另类a∨色屁股| 亚洲永久精品大片| 日本不卡免费在线视频| 国产一区欧美日韩| 99精品国产91久久久久久| 欧洲av一区二区嗯嗯嗯啊| 欧美二区三区91| 一区二区在线免费观看| 日韩av不卡一区二区| 国产乱人伦精品一区二区在线观看| 国产成人在线视频网站| 91国产视频在线观看| 欧美电视剧在线观看完整版| 国产片一区二区| 亚洲777理论| 高清日韩电视剧大全免费| 欧美综合欧美视频| 久久综合久色欧美综合狠狠| 国产精品久久久爽爽爽麻豆色哟哟| 一区二区三区日本| 韩国精品主播一区二区在线观看 | 午夜视频在线观看一区| 国产乱码精品一区二区三区av| 99久久99久久综合| 日韩亚洲欧美成人一区| ●精品国产综合乱码久久久久| 偷拍日韩校园综合在线| 丰满放荡岳乱妇91ww| 91精品欧美一区二区三区综合在| 国产区在线观看成人精品| 天天射综合影视| 91网站视频在线观看| 久久精品亚洲国产奇米99| 午夜久久电影网|