As far as I understand, the MPS languages are defined with MPS.
In principle, that should mean that I could replace them with my own structure, constraint, type ... languages.

How would I go about to make this work?
In theory, yes.
In fact, in MPS 3.0 you can't. There is an implementation problem.

The problem is that MPS knows about some of the language aspects and can't work without code written there. E.g. each node references its concept to be able to identify its type. Now, it really references another node in structure aspect of some language. Instead, it should reference a descriptor generated from this concept - in this case, we could generate this descriptor from some different input.

We are working on that and this feature will be available sometimes, but I can't say when for sure. Not in upcoming release, but maybe in a release.
The only thing you can actually do is to generate some other language not to text, but right into structure (constraints,...) models of languages. We do such a thing in 3.1, so you should be able to do this since 3.0 at least. I suppose this can be done either by a new make facet implemented in your language or a custom action that runs only a generator for your language, without transforming the last model into text, but rather saving it as a structure model of a language.
I understand that each bootstrapping has to rely on the platform.
Let me try to make my question more clear.
I assume that MPS is built using MPS, i.e. that the base languages are defined using the base languages.
This would mean that there are descriptions of the base languages in MPS. These descriptions can be used to build MPS.

Now I want to change the base languages, maybe just a little.
  • How do I open the base structure language description for change?
  • How do I rebuild MPS with the changed structure language?
  • I assume that I can do it for the other base languages in the same way I do it for the structure language.

Please sign in to leave a comment.