At 04:53 PM 9/1/99 , mzukowski@bco.com wrote:
>Excellent overview. I'm having a disconnect on some things. What's the
>difference between the $ and the @? Does $ substitute and @ match?
Exactly. After a $ comes an E expression that provides the value to substitute. After a @ comes an E pattern that is matched against the value extracted from the original specimen.
>So your
>first match in there substitues in var, then parses it and then matches it
>filling in exp with a subtree?
I couldn't parse that ;)
I don't understand.
>My mindset is dominated by having the parser driving the control of a
>program, so maybe I'm just not "getting it" or I'm trying to solve problems
>which aren't appropriate for quasi-parsers.
I'm not really familiar with ANTLR (I did skim the web pages), but I think you put your finger on it: In E, each parser is a small component within a large program written in a general purpose computer language. The super-structure is regular programming, not parsing. Parsing is only for special subproblems.
>OK, yours is much much easier to read as far as what is output. But you are
>matching trees against trees and not really parsing trees, I think. Why
>does that matter? Overhead, and generality. You have to generate a tree
>for every expression you match against.
As explained above, I am, but I don't have to. Similarly, my "rx" quasi-parser builds a Perl5 regular expression matcher for each regex string. This object matches specimen strings, rather than having to interpret a pattern-string at match time.
>Hmm, I have more thinking to do. Given a separate grammar you could enter
>it from a quasi-pattern...or you could specify grammar fragments in the
>quasi-pattern... but you don't want to parse a whole program, just a sub
>tree...
I'm not sure what you're saying, but it sounds right.
>Sorry my thoughts are so fragmented. I'll return to it tomorrow.
Looking forward to it.
Cheers,
--MarkM