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