Gavin,

Thanks for reviewing the code, and I'm glad to help.

"addative" - D'oh! I copied those rules from a Java grammar.  The copy-paste
anti-pattern strikes again. :)

I should be able to start working on an SQL producing examples in the next
few days.  I will take a look at net.sf.hibernate.persister.Queryable, and
start a 'tree walker' grammar to round out a typical ANLR source translator
in the typical 'three phase' ANTLR fasion (lexer->parser->tree parser).
Here are some questions I had:

* Can this be done by just invoking the methods in the Hibernate JAR for
now, or do I need to build Hibernate?  Either way, which version of the
Hibernate API should I use?

* How do I:
        - Load and read Hibernate configurations?
        - Read information about 'dialects'?
        - Invoke SQL generating APIs?

* Should I add SQL-99 functions to the grammar?

Others have mentioned adding SQL-99 functions to the grammar and using them
to portably translate into the proper dialect. Since some of the SQL-99
functions have their own (IMHO, weird and unnecessary) syntax, they must be
added to the grammar.  For example:
        concatentate : "CONCATENATE" '(' expression ( '||' expression )* ')'
;

BTW, 
I've seen much more 'inelegant' hand written parsers before (written in
FORTRAN and assembly), your's isn't too bad at all.

> -----Original Message-----
> From: Gavin King [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, November 20, 2003 3:16 AM
> 
> OK, looks really great. So, now that we have a really nice 
> grammar for HQL, whats the next step?
> 
> Well, lets get it to spit out some SQL, I suppose. I think 
> the first step is to get it to translate:
> 
>      from Foo foo where foo.id = 1
> 
> to SQL, given a mock instance of net.sf.hibernate.persister.Queryable.
> 
> Joshua, I know little about building proper compilers (I know 
> a very little about parser compilers, but thats all) and it 
> is universally agreed that my only previous attempt at it 
> (net.sf.hibernate.hql) is ..... inelegant ..... so it would 
> be fantastic if you could get me as far as showing me a 
> proper design pattern for this. It would be fantastic if you 
> could implement the above for me, to demonstrate what a 
> proper translator looks like - that way I can pick up the 
> other side of things (spitting out SQL) and integrate into Hibernate.
> 
> I'd like to really keep moving with this - its really good 
> and we need it....
> 
> Thanks
> 
> Gavin
> 
> P.S. "addative" is spelled "additive" ;)
> 
> Joshua Davis wrote:
> 
> > I've checked my code into my own CVS repository on Source Forge, in
> > case anyone wants to have a look. Cleaned things up a bit, 
> the tests 
> > should run anyway. The build depends on: ANT, ANTLR, and JUnit
> > 
> > [EMAIL PROTECTED]:/cvsroot/yajul Module=hql
> > 
> > Web view: http://cvs.sourceforge.net/viewcvs.py/yajul/hql
> > 
> > Check it out. (pun intended... sorry!)
> > 
> > 
> -- 
> Gavin King
> JBoss Group
> +61 410534454
> http://hibernate.org
> 




-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
hibernate-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel

Reply via email to