parsing comments in scripts
Alex Tweedly
alex at tweedly.net
Fri Dec 10 14:26:15 EST 2004
At 13:01 10/12/2004 +0000, Alex Tweedly wrote:
>At 23:01 09/12/2004 -0800, Mark Wieder wrote:
>>I came across an interesting combination of tokens and words: tokens
>>ignore comments, words don't make that distinction. However, the token
>>delimiter isn't necessarily where I want it to be:
>>
>>put the tokens of "put" && quote & "something" & quote && "--comment"
>>results in
>>put "something
>>without the trailing quote.
>
>That's not quite what I see - I get just
>put something
>i.e. without either quote; that makes sense because once the line is
>tokenized, the quotes are unnecessary.
Sorry - my error. I had already changed my script to investigate the case
described later in my email (put a+b into c)
So (naturally enough, with hindsight) using something like
token N
returns JUST the token itself, whereas
token N to K
returns the intervening delimiters, but not any trailing one.
So we only need to restore any trailing quote, which is only needed if the
final token started out being quoted, therefore
function StripComments theLine
local theResult
put token 1 to -1 of theLine into theResult
if quote is in token -2 to -1 of theLine then put quote after theResult
return theResult
end StripComents
should do it OK. Seems to work for my simple testing so far - but there may
be cases I haven't thought of yet.
Unfortunately, it appears that token DOES include the C-style comment
delimiters recently introduced, and they can be multi-line, so you'll need
to do something more to deal with that.
-- Alex.
More information about the use-livecode
mailing list