The hard bit is to be able to match the function call - and extract whatever is between the brackets - then I can recurse the bit between the brackets if
it in turn contains a (user defined) function call.

My guess is that this is something that a regexp could deal with or do I have to go back to the techique of counting opening and closing brackets?

Hi David,

To solve a problem of this type, what matters is to be able to unambiguously know the status of the "unit" your regular expression or whatever has identified. If you go from left to right, you can't because you never know if a "(" parenthesis will be followed by more "(" or not.

The minimal unit, that is the unit that you know not to contain any further function itself is the ([^)]*) group, which corresponds to function(...) where what is enclosed within the parentheses is not allowed to contain any parenthesis.

What you may want to try, therefore, is to recurse with a regular expression, that looks somehow like this (I let you get the correct one):

        [^\b()]*                (       [^)]*   )

(I put tabs for increased legibility; \b means any character that is a word boundary... check the doc to be sure this correspond to what you want).

The alternative is to look for a ")" character... then look from right to left for the first "(" character. You unambiguously know this forms a minimal unit. Another alternative, if you insist to go from left to right is to look for a pattern of this type "(...)[^)]. Again, you know you have unambiguously come across a minimal unit that doesn't enclose any further unit.

You don't try to find out what functions are enclosed within the big ones. You rather try to identify the parent of each function. Once you have a table with

node    parent
bfct            afct
cfct            bfct

you can sort it and read it any way you want.

You may want to run a google search on 'linked list data structure' for some additional insights <http://cslibrary.stanford.edu/103/ LinkedListBasics.pdf>
<http://www.gamedev.net/reference/programming/features/uds1/>
<http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=176>

Marielle


_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to