On 07/02/2015 08:20 PM, Kay C Lan wrote:
Which proves the point that it isn't as easy as you first made out. As you
say, cracking the GLX2 code is probably the easiest route to take and I'd
be surprise if that code wasn't developed over a long period of time of
'discovering' odd edge cases cropping up here and there, that Jerry never
envisage in a single session of coding.
Well, here's the easy part from glx2:
-- gather the script local variables
function getLocals pScript
local tTemp, tLocals
filter pScript with "local *"
repeat for each line tLine in pScript
put word 2 to -1 of tLine & cr after tTemp
end repeat
-- allow for multiple declarations in one line
replace "," with cr in tTemp
repeat for each line tLine in tTemp
put word 1 of tLine & cr after tLocals
end repeat
chomp tLocals -- chomp is in the frontscript, removes trailing cr
set the tLocals of this card to tLocals
end getLocals
-- here's the part that looks at usage (watch the lineWrap)
--theHandler here could be the entire script of a single handler
repeat for each line theLine in theHandler
if word 1 to 3 of theLine is "repeat for each" then
put word 5 of theLine into theWord
if theTemps is empty then
put theWord into theTemps
else
if theWord is not among the lines of theTemps then
put cr & theWord after theTemps
end if
end if
next repeat
end if
if "into" is among the words of theLine or "after" is among the
words of theLine or "before" is among the words of theLine or word 1 of
theLine is "repeat then
put 0 into tWordNum
repeat for each word theWord in theLine
add 1 to tWordNum
if char 1 of theWord is "#" or char 1 to 2 of theWord is "--" then
exit repeat
end if
if char 1 of theWord is quote then
if theTemps is empty then
put theWord into theTemps
else
if theWord is not among the lines of theTemps then
put cr & theWord after theTemps
end if
end if
next repeat
end if
if theWord is among the items of "each,with,into,after,before" then
put word tWordNum+1 of theLine into theNextWord
if "(" is in theNextWord then
next repeat
end if
put token 1 of theNextWord into theNextWord
if theNextWord is not among the lines of theTokens and
theNExtWord is not empty then
if "[" is in theNextWord then
replace "[" with cr in theNextWord
replace "]" with "" in theNextWord
end if
if theTemps is empty then
put theNextWord into theTemps
else
if theNextWord is not among the lines of theTemps then
put cr & theNextWord after theTemps
end if
end if
end if
end if
end repeat
end if
end repeat
--
Mark Wieder
ahsoftw...@gmail.com
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode