how to check for unnecessary local declarations?
Peter Haworth
pete at lcsql.com
Fri Jul 3 14:11:28 EDT 2015
Nice! Only thing I don't see is dealing with block comments - the things
surrounded by "/*" and "*/" and possibly spanning several lines.
Pete
lcSQL Software <http://www.lcsql.com>
Home of lcStackBrowser <http://www.lcsql.com/lcstackbrowser.html> and
SQLiteAdmin <http://www.lcsql.com/sqliteadmin.html>
On Thu, Jul 2, 2015 at 11:36 PM, Mark Wieder <mwieder at ahsoftware.net> wrote:
> 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
> ahsoftware at gmail.com
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
More information about the use-livecode
mailing list