Hi can you please an example of that query?

Ivan

PS: latest trunk of PL/SQL grammar can be checked out from
https://tora.svn.sourceforge.net/svnroot/tora/branches/tora-trotl/sandbox


On 10/12/2011 09:14 PM, Brian Lavender wrote:
> I am analyzing a set of SQL queries to see what tables and columns are
> touched.  They are select queries in Oracle using a handful of functions
> such as NVL2, DECODE, and other functions. While I have seen grammars
> for Oracle, it seems that digging through them has been confusing not
> to mention one used all my heap!  So, I decided to construct my own
> grammar. The H2 website has a pretty nice layout of a select grammar,
> so I am using that as my model. I have a couple questions.
>
> First, I tried making my start rule 'select' which was later recursively
> called.  It appears that I can't do that? I corrected my grammar with
> a superceding start rule and all appears fine. Can someone explain the
> problem with recursively calling the start rule.
>
> How does my grammar look so far? I have just been "stubbing" it out.
>
> Any suggestions for doing this?
>
> brian
>
> Sample grammar I am referencing.
> http://www.h2database.com/html/grammar.html#select
>
> grammar BooSQL;
>
> options {
>    language = Java;
> }
>
> @header {
>    package grammar;
> }
>
> @lexer::header {
>    package grammar;
> }
>
> sqlStatement
>       : select
>       ;
>
> select
>       :
>       'SELECT' ('DISTINCT'|'ALL')? selectExpression (',' selectExpression)*
>       'FROM' tableExpression (',' tableExpression)*
>        ('WHERE' expression)?
>        ('GROUP' 'BY' expression (',' expression)*)?
>        ('HAVING' expression)?
> // This where I originally had the problem
>        (('UNION' ('ALL')? | 'MINUS' | 'EXCEPT' | 'INTERSECT') select)?
> // Fake end to statment for now
>       'ENDSQL'
>       ;
>       
> selectExpression
>       : IDENT+
>       ;
>
> tableExpression
>       : IDENT+
>       ;
>
> expression
>       : IDENT+
>       ;
>
>
>
>
>
> fragment LETTER : ('a'..'z' | 'A'..'Z') ;
> fragment DIGIT : '0'..'9';
> INTEGER : DIGIT+ ;
> IDENT : LETTER (LETTER | DIGIT)*;
> QUOTE_IDENT : '"' LETTER (LETTER | DIGIT | ' ')* '"';
> WS : (' ' | '\t' | '\n' | '\r' | '\f')+ {$channel = HIDDEN;};
> COMMENT : '--' .* ('\n'|'\r') {$channel = HIDDEN;};
>
>


List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to il-antlr-inter...@googlegroups.com.
To unsubscribe from this group, send email to 
il-antlr-interest+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to