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: How do you create a grammar for a multi-language language? Date: Thu, 3 Mar 2022 13:57:55 +0000 Organization: Compilers Central Lines: 19 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <22-03-004@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8bit Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="16318"; mail-complaints-to="abuse@iecc.com" Keywords: parse, question Posted-Date: 05 Mar 2022 16:50:21 EST X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Thread-Topic: How do you create a grammar for a multi-language language? Thread-Index: AdgvBM3tabuoXFasQLiTikka5cGndQ== Content-Language: en-US Xref: csiph.com comp.compilers:2909 Hello Compiler Experts! Suppose you are creating a grammar for a language that hosts other languages. For example, the (parent) language hosts the regular expression language and the XPath language. How do you create a grammar for a multi-language language? I can imagine two approaches: 1. Create the grammar for the parent language and copy and paste into it the grammars of the hosted languages. Copy-and-paste doesn't sound appealing. 2. Create a grammar just for the parent language. Then, create a parsing pipeline: parse the input first with the grammar for the parent language, then parse the input with the grammar for one hosted language, then parse the input with the grammar for the second hosted language, and so forth. I have no idea how this would work; e.g., how would an abstract syntax tree be constructed? How do you create a grammar for a multi-language language? /Roger