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?

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

      Very cool, I’d be interested in your publications once you’re done. I like metaprogramming, but once you realise you might have needed it, you’re already knee deep in fresh legacy code.

      • blotz@lemmy.world
        link
        fedilink
        arrow-up
        3
        ·
        10 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
          ·
          10 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 😄