6 ms·
> that's a point in favor of a language that's LL(1) rather than context-dependent and 5 points in favor of a language that's LL(0) rather than LL(1). The logi
by vorg 9y ago
> that's a point in favor of a language that's LL(1) rather than context-dependent
and 5 points in favor of a language that's LL(0) rather than LL(1). The logical conclusion of your argument is to use Lisp everywhere.
- kazinator 9y agoLisp is LL(1). If we have #, we don't know what we're looking at until we read the next character, like #s structure, #( vector, #= circle notation, etc. Actually there can be an integer between the two; but that doesn't change what kind of syntax is being read so it arguably doesn't push things to LL(2). Other examples: seeing (a . we don't know whether this is the consing dot notation, or the start of a floating-point token. Speaking of tokens, the Lisp token conversion rules effectively add up to LL(k). 12345 could be an integer or symbol. If the next character is, say, "a" and the token ends, we get a symbol. Basically if we see a token constituent character then k more characters have to be scanned before we can decide what kind of token and consequently what object to reduce to.
- vorg 9y agoThat variety of Lisp with its particular brand of syntactic sugar is LL(1), and its lexing LL(k). Because of its circumfix notation, a Lisp language can be LL(0) when the prefix symbols and tokens are defined appropriately. That was the point of my original comment.