From: | "Kartik Agaram" <ak@akkartik.com> |
Newsgroups: | comp.compilers |
Date: | Sat, 05 Mar 2022 16:55:48 -0800 |
Organization: | Compilers Central |
References: | 22-03-004 22-03-006 |
Injection-Info: | gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="68525"; mail-complaints-to="abuse@iecc.com" |
Keywords: | parse, design |
Posted-Date: | 05 Mar 2022 20:11:57 EST |
In-Reply-To: | 22-03-006 |
> 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.
That feels like a much more tractable problem. Don't even think of it
as a multi-language language. It's a language you're designing (so you
have lots of room for maneuver) around XPath.
> 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).
Yeah, putting a second language inside the string literals of the
first is a very common approach. All the tooling for the outer
language can remain oblivious of the second. You don't even need to
design a new language, this approach works with any existing one, and
you can focus on implementing a library to process XPath.
If you do want to design another language, however, you can make things a lot nicer. For example:
- any URL is a valid literal in the Red programming language: https://github.com/red/docs/blob/master/en/datatypes.adoc
- the JSX extension of JavaScript used in the React framework permits component literals that look a lot like some sort of markup language: https://reactjs.org/docs/introducing-jsx.html
Kartik
http://akkartik.name/about
Return to the
comp.compilers page.
Search the
comp.compilers archives again.