On Sat, Aug 02, 2003 at 08:40:26AM -0700, Austin Hastings wrote:
: You're both right.
Well, actually, I think Damian misspoke slightly. I only aim for
95% accuracy in the Apocalypses (or I'd never get them done). So I
think it's pretty spectacular if Damian gets to 99.44% accuracy in
: Notice that "request" does not have an "is parsed" tag. So the default
: behavior for macro calls is to use the parsing syntax of subroutines
: (which makes a lot of sense).
: Thus, the call to result "looks like a subroutine call" (because that's
: the default way to invoke a macro) but is recognized, after parsing, as
: a macro (because that's how it's implemented -- parse a rule, follow
: the results).
I suspect a macro is always recognized the moment its name is parsed,
whether or not there is an "is parsed". The trait merely overrides the
default parse of the macro.
: What's unclear to me is the behavior as specified -- Ex6 calls for the
: C<is parsed> syntax to specify the argument parsing. I had thought that
: an infix or postfix macro would be possible because the macro would
: have access to the parser internals. How to do that is missing.
It is possible, but an infix or postfix macro may only take a standard
expression on the left, since that part has already been parsed.
The macro could give that expression non-standard semantics, however.
And an infix operator can specify an "is parsed" for its right
argument. In fact, ??:: could be implemented as an infix:?? macro
that does a special parse looking for a subsequent :: token.