Some general questions

Hi all,

coming from XText I'm evaluating MPS for a new project, but even after reading the docs and looking at the jetbrains tv channel as well as the tutorial from Marcus Voelter I have some questions left.

1. The DSL to be created will be used in multiple other projects, the correct way to deliver them is to build an idea plugin? If so what role does the "Plugin Solution" play, because it is not mentioned in the "Building IntelliJ IDEA language plugins" guide.

2. I'm not entirely sure about the nature of a DevKit module, the documentation says it's "A package of related languages that have been grouped for user convenience". How does that relate to question 1, can I deliver a devkit, where everything the developer needs to use my language is bundled?

3. A solution can b used to deliver models within the plugin? Lets say I create a language to describe entities I could use the solution (runtime solution?) to deliver a set of base entities?

4. As models tend to get larger and larger it may become very inconvenient to edit the whole model at once. How can it be achieved to brake down the model into smaller parts, that can be generated as a whole model (maybe multiple model roots?).

5. After the generator is run, how are the generated artifacts packaged? Jars? And how is this process triggered within Idea and in a continuous build environment (I saw some mentions of an scripts, so I guess there is no maven integration)?


1 comment
Comment actions Permalink
Hey Pelle,

I try to answer some of your questions as an user:

1) A plugin solution provides some extension to the MPS tool. I use it to add some buttons and menu entries. Such a solution should of course be packed together with your language into a MPS plugin.

2) I haven't realy used a devkit yet.  But I think it's just a bundle of languages and solutions. So if you want to extend some language, which consists of different sublanguages, you just have to use the devkit and not any necessary language and solution.

3) Therefore you can define your runtime solutions in your language module properties.

4) I'm not sure if I understand you right, but you can move and copy any node (including root nodes). Have a look to the context menu entry Refactoring.

5) I haven't worked with Idea. In MPS generated Java classes are compiled by default, as far as I know. If you want to pack some jars you should look at the build language and if you want to extend the generation flow with some more actions, you have to define a facet from j..m.make.facet.


Please sign in to leave a comment.