Re: match() in depth!

new topic     » goto parent     » topic index » view thread      » older message » newer message

On 25 Feb 2002, at 15:58, Derek Parnell wrote:

> 
> Hi Kat,
> 
> however the result of parse() is a nested sequence.

Correct.

>  IOW this ==> {"this","is","a","test","of","match()"} is a sequence that
>  contains six other 
> sequences (aka strings). And match is actually looking for matching slices.
> When
> we are dealing with sequences that look like strings, we can easily think of
> match as looking for substrings. But in Euphoria palance, a substring is just
> a
> slice of a sequence.

Correct, which is the whole point of parsing, makes each word (token) a 
single slice, so word number 2 in sentence is same as sentence[2].

> If we use some symbolic representation of the test sequence above it could be
> coded as :
> 
>  {TIAtOM} 
> 
> where I've simple replaced each word with a letter representing that word.
> 
> Thus the find for "is" similarly coded is match({I}, test). This will return
> 2.
> The scan for the "s" word is coded match({S},test) and returns 0 because there
> is no "s" word in the test sequence.

You lost me there. You said match({I}, test), which i understand, but that is 
{I}, same as "I", which meets the specs for match() in the help files. I used 
{"I"}.

> May I recommend trying to locate "is" word in a standard Euphoria sequence
> string by doing :
> 
>    find (" is ", test) -- Note the spaces around the word. This might save you
>    parsing it too often.

I know that works too, same thing about the {" "}  though. But about parsing 
it too often, i parse the lines once, then each item is a slice, and i deparse 
before writing each out again. There is at least one change on each of 
200,000+ lines, and some have dozens of changes.

Kat
 
> 25/02/2002 3:23:51 PM, Kat <gertie at PELL.NET> wrote:
> 
> >
> >On 25 Feb 2002, at 14:01, Derek Parnell wrote:
> >
> >> 
> >> Hi Kat,
> >> I'm not quite sure what you are driving at either.
> >> 
> >> When you run this code of yours, what do you get displayed?
> >> 
> >> When I run it, it only reports that 'is' is found. And this is exactly what
> >> I
> >> would have expected.
> >> 
> >> My assumption is that 'parse()' converts :
> >> 
> >>  "this is a test of match()"
> >> 
> >> to:
> >> 
> >>  {"this","is","a","test","of","match()"}
> >
> >Correct.
> > 
> >> In which case the match({"is"},test) call will return 2. Because "is" is
> >> the
> >> second element of the test sequence.
> >
> >> In which case the match({"s"},test) call will return 0. Because "s" is not
> >> any of the elements in the test sequence.
> >> 
> >> What did you find surprising with your test?
> >
> >I had never seen the match({"is"},test) in any code i have read in the 
> >archives. I have seen match("is",test). Frankly, the use of {} occasionally
> >confuses me, and to put the "is" inside the { } told me it was a nested
> >sequence, and should have returned nothing, zero, or an error,, because the
> >help files say all the parms for match() are to be sequences, and a nested
> >seq
> >as the first parm barely makes sence. But i was looking for a way to get some
> >code running faster, and tried it.
> >
> >Kat
> >
> >
> >> ------
> >> Derek.
> >> 
> >> 
> >> 25/02/2002 1:43:42 PM, Kat <gertie at PELL.NET> wrote:
> >> 
> >> >
> >> >On 24 Feb 2002, at 22:52, rforno at tutopia.com wrote:
> >> >
> >> >> 
> >> >> OK. But what is the strange thing about it? I don't understand.
> >> >
> >> >The {bracketed} and "quoted" parts in the examples below. 
> >> >
> >> >Kat
> >> >
> >> > 
> >> >> ----- Original Message ----- 
> >> >> From: "Kat" <gertie at PELL.NET> 
> >> >> To: "EUforum" <EUforum at topica.com>
> >> >> Sent: Sunday, February 24, 2002 12:49 AM
> >> >> Subject: match() in depth!
> >> >> 
> >> >> 
> >> >> > I didn't know we could do this!
> >> >> > 
> >> >> > include strtok.e
> >> >> > with trace
> >> >> > sequence test
> >> >> > 
> >> >> > test = "this is a test of match()"
> >> >> > test = parse(test,32)
> >> >> > 
> >> >> > 
> >> >> > if match({"is"},test) then 
> >> >> >  puts(1,"found is\n") 
> >> >> > end if
> >> >> > 
> >> >> > if match({"s"},test) then 
> >> >> >  puts(1,"found s\n") 
> >> >> > end if
> >> >> > 
> >> >> > trace(1)
> >> >> > abort(0)
> >> >> > 
> >> >> > 
> >> ---------
> >> Cheers,
> >> Derek Parnell 
> >> 
> >> 
> ---------
> Cheers,
> Derek Parnell 
<snip>

> 
> 
>

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu