[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: On the subject of Lua's grammar... --[[ ]]
- From: "Ivaylo Beltchev" <ivo@...>
- Date: Thu, 27 Nov 2003 13:23:05 -0800
From: <RLake@oxfam.org.pe>
To: "Lua list" <lua@bazar2.conectiva.com.br>
Sent: Thursday, November 27, 2003 1:20 PM
Subject: RE: On the subject of Lua's grammar... --[[ ]]
> Nick Trout didn't think he'd be saying this, but:
> > what about the way it works in Perl?
>
> > e.g. <<END;
>
> > I can put anything I want here until my own delimiter is met...
>
> > END
>
> Actually, I think this comes from the Unix shell, even before Perl. It
> is also more or less the strategy used by MIME. However, it can also lead
> to obscure errors, and it is difficult to implement reliably in a code
> generator.
>
> I would actually suggest something much simpler: leave --[[, [[ and ]] as
> they are, except
> that they are only recognized if they are the first characters of a line,
> or perhaps
> the first non-whitespace characters.
>
> That does not allow an "arbitrary" string, but it would certainly solve
> all of my
> problems with accidental closing by a[b[j]]; I can probably remember not
> to
> write that as:
>
> a[b[
> ]]
>
> :)
>
> This would probably mean changing the semantics of long strings [[ ]] yet
> again,
> so that both the first and the last line end are deleted. Oh, well.
I second that, simpler is better!
I have written a text editor with syntax coloring for Lua. For each line of the text it stores a state at the end of the line to be used in the next line. For example if the current line starts a string and ends on '\' then the string continues on the next line.
The nested comments and strings are a big pain as it is because I have to include the nesting level in my state. Adding variable nested comment delimiters would greatly complicate the end state. (Right now it fits nicely in the range 0..30 and I use it instead of EOL character) I have to include the number of ***s and/or any additional arbitrary identifiers.
I have checked out several other syntax colorers and they use similar approach. Adding variable delimiters will most likely complicate those too.
Regards
Ivo