/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.query.sqm.produce.internal.hql;
import org.hibernate.query.sqm.hql.internal.antlr.HqlParser;
import org.hibernate.query.sqm.hql.internal.antlr.HqlLexer;
import org.jboss.logging.Logger;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.Token;
/**
* @author Steve Ebersole
*/
public class HqlParseTreeBuilder {
private static final Logger log = Logger.getLogger( HqlParseTreeBuilder.class );
/**
* Singleton access
*/
public static final HqlParseTreeBuilder INSTANCE = new HqlParseTreeBuilder();
public HqlParser parseHql(String hql) {
// Build the lexer
HqlLexer hqlLexer = new HqlLexer( new ANTLRInputStream( hql ) );
// Build the parser...
final HqlParser parser = new HqlParser( new CommonTokenStream( hqlLexer ) ) {
@Override
protected void logUseOfReservedWordAsIdentifier(Token token) {
log.debugf( "Encountered use of reserved word as identifier : " + token.getText() );
}
};
HqlParseTreePrinter.logParseTree( parser );
return parser;
}
}