Custom concept as a template node tree

I often have a need to define a concept that aggregates closure literal with predefined parameters, some statements in the body, but which have certain nodes that should be customized. In this case template is written on D-1 langauge, but itself belongs to a more abstract language D. A foobar example could be like this:

template base concept:
/*
    Concept with Expression and SatementList blocks
*/
MyJDBCStatement
 * child Expression childCondition
 * child StatementList body
prettyPrint();

template itself:
/*
    Template with mounted shortcuts as references to MyJDBCSTatement children
*/
if(myconcept.condition1 && myconcept.ref.condition2 && :[concept.childCondition] { // mount condition expression
  Connection c = doGetConnection(); //throws SQLException
  :[concept.body] //mount body
  func1(); // throws bunch of exceptions
})
prettyPrint();

template usage:
  string foo = doSomeCalculations();
  MyJDBCStatment{
      childCondition -> foo.length()>5
      body -> {
          System.out.println(foo);
      }
  };
prettyPrint();

No need to provide special data flows, checking rules, reduction rules, etc.

Are there any future plans on implementing MPS feature alike?

Please sign in to leave a comment.