Path: csiph.com!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Roger L Costello Newsgroups: comp.compilers Subject: Re: How do you create a grammar for a multi-language language? Date: Sat, 5 Mar 2022 22:29:37 +0000 Organization: Compilers Central Lines: 51 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <22-03-006@comp.compilers> References: <22-03-004@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="40565"; mail-complaints-to="abuse@iecc.com" Keywords: parse, question, comment Posted-Date: 05 Mar 2022 18:27:13 EST X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Content-Language: en-US Xref: csiph.com comp.compilers:2911 Kartik Agaram wrote: * I'd re-ask the question in the context of the concrete languages you're considering. I am working with a team to develop a new language and our current thinking is that the language will use the XPath language for navigating through documents and the CSS language for expressing sets of match/action pairs. This idea of multi-language languages is very common within the XML community. For example, the XSLT language uses (hosts) the XPath language. Here is an excerpt to illustrate: select="/Bookstore/Book[1]/Title" The expression /Bookstore/Book[1]/Title is an XPath expression, the other parts are XSLT. So, the format of the select statement is: select="XPath" See how XSLT hosts XPath? That is, one language (XSLT) is using another language (XPath). Another XML language called XML Schema hosts two languages: the regex language and the XPath language. How do compiler experts create grammars for multi-language languages? /Roger From: Kartik Agaram Sent: Saturday, March 5, 2022 4:58 PM Subject: [EXT] Re: How do you create a grammar for a multi-language language? The first way is unlikely to work. Inlining one grammar into another is overwhelmingly likely to result in garbage. If you're lucky it'll recognize one of the languages and ignore the productions of the other. More likely it'll recognize a single language that's an uncontrollable melange of both. In the worst case it'll seem to work but fail in strange corner cases. In general, I think you under-estimate the difficulty of this problem, and how easy it is for two languages to be fundamentally incompatible. The first question isn't "what's the cleanest way to do this for arbitrary languages?" but "is it even possible for these two languages?" followed by "is it worth the trouble?" So I'd re-ask the question in the context of the concrete languages you're considering. [XSLT is written in XML. Conceptually at least, first you parse the XML using an XML grammar, then you parse the XSLT using the XSLT grammar. -John]