Related articles |
---|
How do you create a grammar for a multi-language language? costello@mitre.org (Roger L Costello) (2022-03-03) |
Re: How do you create a grammar for a multi-language language? costello@mitre.org (Roger L Costello) (2022-03-05) |
RE: How do you create a grammar for a multi-language language? christopher.f.clark@compiler-resources.com (Christopher F Clark) (2022-03-06) |
RE: How do you create a grammar for a multi-language language? costello@mitre.org (Roger L Costello) (2022-03-06) |
From: | Roger L Costello <costello@mitre.org> |
Newsgroups: | comp.compilers |
Date: | Sun, 6 Mar 2022 23:32:13 +0000 |
Organization: | Compilers Central |
References: | 22-03-004 22-03-006 22-03-010 |
Injection-Info: | gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="81037"; mail-complaints-to="abuse@iecc.com" |
Keywords: | parse, design |
Posted-Date: | 06 Mar 2022 18:49:53 EST |
Content-Language: | en-US |
Chris Clark wrote:
> the standard approach to that is to embed the
> second language as a "string" in the outer language.
> Many languages (and their compilers/interpreters)
> do that. That's exactly what your XSLT case
> does. The XPATH code is simply a string in the
> XSLT language, and the XSLT language doesn't
> attempt to parse it. It simply hands the code
> off to an XPATH parser when in knows the string
> is XPATH code.
Okay, so there would be one grammar for XSLT, a second (independent) grammar for XPath. The grammar for XSLT just treats the XPath portions as strings. The grammar for XPath ignores the XSLT portions. So the input is processed in a pipeline fashion.
Is that correct?
But, but, but, ... how would an Abstract Syntax Tree be constructed when the input is processed in a pipeline?
/Roger
[I believe the answer is "incrementally." You can run the parsers sequentially
or you can run them as coroutines. I don't think it makes much difference unless
the intermediate version is extremely huge, but that's rarely a problem with XML. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.