Finding matched parentheses
dunbarx at aol.com
dunbarx at aol.com
Sun Jul 28 15:15:43 EDT 2013
I will gladly accept being clever and inefficient.
Craig
-----Original Message-----
From: Peter Haworth <pete at lcsql.com>
To: How to use LiveCode <use-livecode at lists.runrev.com>
Sent: Sun, Jul 28, 2013 2:00 pm
Subject: Re: Finding matched parentheses
Yes, I can believe that. don't think regex is the most efficient thing in
the world. Some of the tests I did resulted in LC running out of memory
too! That's another thing I think should work better with matchText and
matchChunk. Any errors, eg a bad regex, result in a runtime error - would
be much better if they put something into the result.
Pete
lcSQL Software <http://www.lcsql.com>
On Sun, Jul 28, 2013 at 12:54 AM, Geoff Canyon <gcanyon at gmail.com> wrote:
> I checked, and your solution and my strictTotalMatching function return
> identical results. It took me a while to figure out how it works. It's very
> clever, but interestingly, not very efficient -- it almost certainly
> doesn't matter for the likely use cases, but if you throw a string with a
> few thousand (s and )s at it, seconds will go by before you get the result.
>
> gc
>
>
> On Fri, Jul 26, 2013 at 12:02 PM, <dunbarx at aol.com> wrote:
>
> > I am old fashioned. And late. I think this works:
> >
> >
> >
> > on mouseUp
> > answer findNests(fld 1)
> > end mouseUp
> >
> >
> > function findNests var
> > repeat with y = 1 to the number of chars in var
> > if char y of var = "(" then put y & return after lefts --build list
> > of left paren
> > if char y of var = ")" then put y & return after rights --build
> list
> > of right paren
> > end repeat
> > put 0 & return before rights
> >
> > repeat with y = the number of lines of lefts down to 1
> > repeat with u = the number of lines of rights down to 1
> > if line y of lefts < line u of rights and line y of lefts > line
> > u-1 of rights then
> > put line y of lefts & "," & line u of rights & return after
> > accum
> > delete line y of lefts
> > if line u of rights <> 0 then delete line u of rights
> > end if
> > end repeat
> > end repeat
> > sort accum numeric
> > return accum
> > end findNests
> >
> >
> > The returned list orders the char numbers of the paired parens.
> >
> >
> > Craig
> >
> >
> >
> > -----Original Message-----
> > From: Peter Haworth <pete at lcsql.com>
> > To: How to use LiveCode <use-livecode at lists.runrev.com>
> > Sent: Fri, Jul 26, 2013 12:09 pm
> > Subject: Re: Finding matched parentheses
> >
> >
> > On Fri, Jul 26, 2013 at 12:10 AM, Thierry Douez <th.douez at gmail.com>
> > wrote:
> >
> > > But this one will work and match the first occurence:
> > >
> > > if matchChunk(mystring,"(\([^)]*\)).*",tstart,tEnd)
> > >
> > > Regards,
> > >
> > > Thierry
> > >
> >
> > Nice Thierry! Doesn't handle nested parens though, but once again, that
> > may not be a possibility in the OP's scenario.
> >
> > Pete
> > lcSQL Software <http://www.lcsql.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
> >
> >
> > _______________________________________________
> > 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
> >
> _______________________________________________
> 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
>
_______________________________________________
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