Is it possible to use a different code generation mechanism?

  • 3
  • 36

Hello,

I've already read a lot about MPS. I think it is a great language workbench with very fancy paradigms. I have a very general question: Is it possible to use a different code generation mechanism while modeling with a language created with MPS? So more technically: Is there a defined extension point for my custom code generation tool?

The reason is that I want to make sure that I could configure my tool chain to my particular needs.

Thank you very much in advance and let me know if you need further information!
LaAck
Answered by Mihail Muhin
 
MPS generator is a sybsystem and a set of languages which are invoked by "generate" action.
You can:
1) write your own action and re-implement the whole process
2) write a "make facet" and develop a new step in the make process, which will do some additional thing on any resource that's produced during generation process(model, output file, resource file etc)
3) write a "pre/post-process generation script" which will make a custom AST transformation, which can't be performed with generator templates (e.g. extracting shared expressions)
4) write a custom textGen, which will write AST to a file in a custom format.

Just choose what you need ;)
MPS generator is a sybsystem and a set of languages which are invoked by "generate" action.
You can:
1) write your own action and re-implement the whole process
2) write a "make facet" and develop a new step in the make process, which will do some additional thing on any resource that's produced during generation process(model, output file, resource file etc)
3) write a "pre/post-process generation script" which will make a custom AST transformation, which can't be performed with generator templates (e.g. extracting shared expressions)
4) write a custom textGen, which will write AST to a file in a custom format.

Just choose what you need ;)

Hi.
How do I accomplish this:
2) write a "make facet" and develop a new step in the make process, which will do some additional thing on any resource that's produced during generation process(model, output file, resource file etc)

?