[antlr-interest] Help on /*empty command*/ ; ; ; ;

Thomas Brandon tbrandonau at gmail.com
Fri Jul 11 22:06:03 PDT 2008


On Sat, Jul 12, 2008 at 2:54 PM, Ruslan Zasukhin
<sunshine at public.kherson.ua> wrote:
> On 7/12/08 12:37 AM, "Chris Rebert" <cvrebert at gmail.com> wrote:
>
> Hi Chris,
>
>> I'm a newbie, but i think the possible lookahead through sql_statement
>> might be the problem.
>> Have you tried:
>>
>> sql_single
>>    : sql_statement? SEMI
>>    ;
>
> Not yet, and I think this will bring performance troubles.
>
> I know that such empty commands are allowed e.g. In C++.
> I have take C++ grammars, and later realize why in SQL I have problems.
>
> * because in C++ SEMI must present.
> * but in SQL it MAY present.
>
> So in SQL I need something as
>
> sql_single
>    :    SEMI
>    |    statement (SEMI)?
>
> But  this not works also...
>
> I think because ANTLR cannot differ when add SEMI to second branch, and when
> it is really just SEMI.
Is this a problem? ANTLR3 will issue a warning but it should work as
desired matching the optional SEMI if possible. I thought ANTLR2 would
do the same but it's been awhile.
Otherwise you could do:
sql_single
    :    SEMI
    |    statement
Assuming you don't need to include the SEMI in the tree this should be ok.
Otherwise you would need to add a predicate to the optional SEMI or
(maybe) make it greedy.

Tom.
>
> Still playing.
>
>
>> Best of luck,
>> Chris
>>
>> On Fri, Jul 11, 2008 at 4:58 AM, Ruslan Zasukhin
>> <sunshine at public.kherson.ua> wrote:
>>> Hi All,
>>>
>>> I try implement on ANTLR 2.7 the empty command for SQL.
>>> So parser will eat something as
>>>
>>> CREATE TABLE T(f1 int);
>>> ;
>>> ;
>>>
>>>
>>> Can somebody show quick draft of such rule?
>>>
>>> This my attempt not works as expected.
>>>
>>>
>>> sql
>>>    :  (sql_single)*  EOF
>>>    ;
>>>
>>> sql_single
>>>    : sql_staement  (SEMI)?
>>>    | SEMI
>
>
> --
> Best regards,
>
> Ruslan Zasukhin
> VP Engineering and New Technology
> Paradigma Software, Inc
>
> Valentina - Joining Worlds of Information
> http://www.paradigmasoft.com
>
> [I feel the need: the need for speed]
>
>
>


More information about the antlr-interest mailing list