I'm looking to write a DSL for a language for whose syntax I already have an EBNF. Since BNFs of various kinds are such a common, compact way of defining the syntax of a language, it seemed that implementing such a thing in MPS should be a well-trodden path. But I haven't found much on the subject in reading through your documentation and watching a variety of your videos. Can you point me to any resources on this, or describe any useful, high-level patterns?
Of course, the non-terminals can be mapped to concepts, and the terminals to enumerable data types. But how, for example, does one define a non-terminal as a (typically recursive) sequence of non-terminals? I can imagine cobbling something together with constraints and type-checking, but is there a cleaner mapping from an EBNF grammar specification to an MPS grammar spec?
Thanks in advance for any guidance you might be able to provide.