Virtual Meetup: Using Grammar Cells to create great MPS editors

Hi Community,

Time to announce the next Virtual Meetup.

This Thursday (the 10th of December) we will have Sergej Koščejev​ talking about Grammar Cells.

Sergej has briefly worked as part of the MPS development team at JetBrains but has since switched his focus to helping companies use JetBrains MPS for their language engineering projects. Sergej has over five years of experience developing and using MPS. He publishes articles on JetBrains MPS on his blog, We have also worked together on Beyond Parsing, a podcast on language engineering, which you can learn more about at

Sergej will show us how to use grammar cells to add fluent editing to your MPS-based editors in a few simple steps, avoiding defining tons of editor actions and custom menus. Grammar cells are part of MPS-extensions, a powerful library originally developed by Sascha Lisson and his colleagues at itemis, currently maintained jointly by itemis and JetBrains.​

How to connect

After the summer we moved the meetup one hour earlier! From now on we will host them at this time.

If this is your first meetup you will find all the instructions to connect here:

(Long story short: click here

It is hosted on Zoom at 6PM GMT+1/CET (you can use this link to figure out which time is in your timezone:


1 Like

Very interesting topic! I’d be especially interested in how to get dot-expressions right, i.e. “natural” typing behavior and scoping for cases like

class A {
  B someB;
class B {
  int x;
  float y;

void method() {
  A a = new A();
  a.someB. // selection of [x, y]

Sorry @Niko, I only noticed your message now while looking for the Zoom link to the meetup. I won’t be covering dot expressions in the demo but if time allows we can maybe look into it afterwards.

Having said that, I don’t think grammar cells can be helpful when implementing dot expressions. The set of all possible options after the dot is based on the type of what’s on the left of the dot, so as long as you define the type system rules, you can use the type of the left-hand side to constrain the right-hand side.