Insert <it’s not much but it’s honest work> meme. It only supports ints and bools, some logic and simple arithmetics and it compiles to Java but damn was it hard to get that far.

Can you guess what everything does?

  • blotz@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    9 months ago

    You essential have a compiler written through metaprogramming. For your implementation, did you use a find and replace or did you define and parse a grammar like a true compiler.

    • prof@infosec.pubOP
      link
      fedilink
      arrow-up
      4
      ·
      9 months ago

      MPS uses projectional editing. Which means for the user that everything you do is free from concrete syntax, and you basically edit a graphical representation of that abstract syntax tree directly, while it looks like you’re in a textual editor.

      So I define abstract nodes that may have certain relationships with each other and then give them a representation in the editor (which is what you see in the screenshot). These nodes may also have generators assigned to them, which use map/reduce operations to generate whatever source code I desire. It usually includes its own bit of code, and triggers code generation of its children as well.

      I hope that was somehow clear 😄