< :the previous in number
^ :the list in numerical order
> :the next in number
P :the previous (in thread)
N :the next artilce (have the same parent)
|<:the top of this thread
>|:the next thread
^ :the parent (reply-to)
_:the child (an article replying to this)
>:the elder article having the same parent
<:the youger article having the same parent
---:split window and show thread lists
| :split window (vertically) and show thread lists
~ :close the thread frame
.:the index
..:the index of indices
On Sat, 29 Jan 2005, Mark Probert wrote:
> Hi ..
>
> On Friday 28 January 2005 02:37, Hugh Sasse Staff Elec Eng wrote:
>> On Fri, 28 Jan 2005, Clifford Heath wrote:
>>> Hugh Sasse Staff Elec Eng wrote:
>>>> According to "Crafting a Compiler" ISBN 0-8053-3201-4 it seems that
>>>> recursive descent implies LL(1)...
>>>
>>> No. LL(1) just means that the recursive descent parser may only consider
>>> the current unprocessed token. If the lexer allows perusal of two
>>> unprocessed tokens, your recursive descent parser is LL(2).
>>
>> Isn't that just re-framing the problem so that all token pairs are
>> regarded as single entities?
>>
> I am not sure if I fully understand but here goes. In parsing, there is the
[...]
>
> For example, the following rule is not LL(1):
>
> State = ident "=" Expr
> | ident [ "(" ExprList ")" ] .
>
Oh, I was forgetting that ident may be a nonterminal, therefore
composed of n terminals. Hence my above question is rubbish!
> Because we can't determine from a single lookahead which of the ident rules to
> trigger. With LL(2) we could as it would be determined by the "=" or the
> "(".
>
> I hope that this helps.
Thank you.
>
> Regards,
>
> --
> -mark. (probertm at acm dot org)
>
Hugh
>