[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Java parser throws ArrayIndexOutOfBoundsException if first token lea
From: |
Tim Landscheidt |
Subject: |
Re: Java parser throws ArrayIndexOutOfBoundsException if first token leads to syntax error |
Date: |
Mon, 13 Feb 2012 23:19:50 +0000 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) |
Akim Demaille <address@hidden> wrote:
>>>> /* Pop the current state because it cannot handle the error
>>>> token. */
>>>> - if (yystack.height == 1)
>>>> + if (yystack.height == 0)
>>> Is this O(1)? We keep the height of the stack up to
>>> date ourselves? I'm surprised we don't rely on some
>>> Java container to do this for us.
>> What do you mean by O(1) in this case?
> In C++ that's a typical case where list.size() == 0 is
> a bad idea, since it costs a full traversal of the list
> to compute its length, while list.empty() is immediate.
Ah, okay.
> But here it appears that we deal with the length of the
> stack by hand, which is OK, but surprised me.
Well, you'd have to ask Paolo for the reasoning behind
that :-).
>> The parser logic
>> here is shared with the C++ skeleton (and yacc.c looks
>> similar as well). The stack implementation doesn't look
>> very frightening performance-wise.
> That the stacks needs to be implemented by hand in C is
> no surprise :).
I meant the Java one.
Tim