On Jun 30, Steve Fink said:

>On Jun-27, Jeff 'japhy' Pinyan wrote:
>
>> It creates a tree structure, not identical but similar to the array of
>> nodes Perl uses internally.
>
>Ah, good. Then I am interested. When I manage to find some time for
>hacking again, I'll graft it onto languages/regex as a replacement for
>the ridiculous parser I have there now.

>I should just look at the code, but I'm wondering what you do with
>language-specific constructs. Embedded code, for example. How do you
>find the end of it?

Use The Source, Luke.  I do exactly what Perl's regex compiler does:

  /* right after matching "(?{" */
  while (count && (c = *RExC_parse)) {
    if (c == '\\' && RExC_parse[1]) RExC_parse++;
    else if (c == '{') count++;
    else if (c == '}') count--;
    RExC_parse++;
  }
  if (*RExC_parse != ')') {
    vFAIL("Sequence (?{...}) not terminated or not {}-balanced");
  }

Granted, I do it with a recursive regex, not character-by-character, but
that's how I do it.  I don't parse the expression, I just make sure it's
properly balanced.

>And will you be supporting things like Perl6's
>
>  / $x := (a*b) /
>
>where '$x' is a language-dependent variable name syntax?

If I have a means for matching variable names, then that's not a problem.
I assume my first version of the Perl 6 regex parser will only match
simple variables, like $foo and @bar and %blat.  Baby steps.

-- 
Jeff "japhy" Pinyan      [EMAIL PROTECTED]      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
CPAN ID: PINYAN    [Need a programmer?  If you like my work, let me know.]
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.


Reply via email to