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?
- bleistift2 ( @bleistift2@feddit.de ) English60•7 months ago
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.
I have a bachelor’s in computer science and I don’t think I would be able to do that…
- Sibbo ( @Sibbo@sopuli.xyz ) 33•7 months ago
Compiler courses are typically master level.
- dan ( @dan@upvote.au ) 2•7 months ago
I had an entry-level compiler course during undergrad. We used JavaCC to generate a lexer and parser based on eBNF grammar.
- BorgDrone ( @BorgDrone@lemmy.one ) 2•7 months ago
It was part of my BSc, but that was over 20 years ago.
- セリャスト ( @seliaste@lemmy.blahaj.zone ) 2•7 months ago
Im having a mandatory compiler course on my 3rd year of (french) bachelor
- WanakaTree ( @WanakaTree@lemm.ee ) 4•7 months ago
I definitely read this as you were a third year French major being forced to taking a compiler course for a moment and went wtf. Then my brain slapped itself and realized you mean you’re a student in France.
- セリャスト ( @seliaste@lemmy.blahaj.zone ) 1•7 months ago
Haha yeah I meant that I was studying computer science im France and not studying french. Here in France, bachelor are called licence and are only 3 years compared to 4 in north america afaik, but there are way fewer electives
- bleistift2 ( @bleistift2@feddit.de ) English1•7 months ago
Nah, I think they’ve won the French version of The Bachelor 2 years in a row and are about to win the third.
- MonkderZweite ( @MonkderZweite@feddit.ch ) 1•7 months ago
in your area on the world map (wherever that is).
- swordsmanluke ( @swordsmanluke@programming.dev ) 16•7 months ago
Compilers are a specialized topic - and syntax design is fiddly - but it really is no harder than any other sort of program. A lot of the hard theoretical work was done back in the sixties and seventies. You don’t have to start from scratch. These days it’s “only” a matter of implementing the features you want and making sure your syntax doesn’t leave itself open to multiple interpretations. (just as arithmetic, e.g. ‘5 × 4 - 1’ requires some rules to make sure there’s only one correct interpretation, so do language syntaxes need to be unambiguous to parse. )
Don’t get me wrong - writing a language is a lot of work and it’s super cool that OP has done this! I just want to stress that language development is 100% doable with an undergrad degree. If you understand recursion and how to parse a string you already have all the theory you need to get started.
Valuable input! I actually am an undergrad student. There are a lot of frameworks out there that support writing languages, with MPS being one of them.
If I’d start from scratch again and had a little more time, I’d frankly try writing an interpreter myself, instead of trying to conform to weird framework syntax, which I won’t be able to reuse in any other context.
Saying syntax design is fiddly is an understatement. I focused very hard on getting an abstract syntax somehow finished before working on generation in my first iteration. Then I had so much technical debt, that I couldn’t get anything to work and had to rewrite a lot. So I scrapped it all and started again, starting with top level concepts including generation and only implementing some lower level ones, once everything around it worked properly.
- sik0fewl ( @sik0fewl@kbin.social ) 4•7 months ago
If you’d like to learn how, I recommend the book (which is also available online) Crafting Interpreters.
- catastrophicblues ( @catastrophicblues@lemmy.ca ) 1•7 months ago
It’s likely transpiring and not compiling, so it’s a lot easier than it seems. Source: made a language that adds features to Python and transpiles to valid Python.
It doesn’t compile or transpile in actuality. It generates Java based on an abstract syntax tree. The concrete syntax is not considered in Java generation by MPS.
- bleistift2 ( @bleistift2@feddit.de ) English39•7 months ago
class Scratch { // Start of file public static void main(args: string[]) { int number1 = 2; number 1 = 10; int number2 = 13; boolean fo_sure = true; if (fo_sure) { number1 = number1 + 5 - 10 * 2 / 3; } System.out.println(number1); boolean canYouSeeMee = false; System.out.println(canYouSeeMe); if (false) { canYouSeeMe = false; } else { canYouSeeMe = true; } System.out.println(canYouSeeMe); } }
What’d I win?
I find it interesting and unnerving that I understood the code, but not the youthspeak.
Well done, here’s your price: 🏅
You may redeem it for a star on a GitHub repo of your choice.
It all gets put into the main method though in this version 😄
- MajorHavoc ( @MajorHavoc@programming.dev ) 14•7 months ago
It’s so beautiful!
Now I’m thinking about how to alias “flex X on the haters” into other development environments…
- Bruno Finger ( @brunofin@lemm.ee ) 11•7 months ago
Is flex X on the haters a way of logging to console?
Yes, it pretty much just wraps the expression in a “System.out.println();”
- Aatube ( @Aatube@kbin.social ) 13•7 months ago
Maybe “flex X” outputs to stdout and “flex X on the haters” outputs to stderr?
I like the way you think! 😂
- mwguy ( @mwguy@infosec.pub ) 6•7 months ago
flex X on the fools
does verbose logs only. - Bruno Finger ( @brunofin@lemm.ee ) 1•7 months ago
I’m curious to know how your language throws and catches errors :)
- onion ( @onion@feddit.de ) 7•7 months ago
- bleistift2 ( @bleistift2@feddit.de ) English7•7 months ago
It only supports ints and bools, some logic and simple arithmetics
That’s more than you need.
- WarmSoda ( @WarmSoda@lemm.ee ) 6•7 months ago
No cap is cracking me up. This is great stuff
- Dizzy Devil Ducky ( @AceFuzzLord@lemm.ee ) English5•7 months ago
That’s cool but also makes me cringe.
- DefederateLemmyMl ( @SpaceCadet@feddit.nl ) English5•7 months ago
Is this LOLCODE 2.0?
- ULS ( @ULS@lemmy.ml ) 5•7 months ago
“based”
- porgamrer ( @porgamrer@programming.dev ) 5•7 months ago
I swear, Zoomers are like the steve buscemi “fellow kids” meme, but somehow everyone in the scene is young
Anyway, nice compiler. Might feel basic to you, but writing a back end for a low level IR format is not that much harder.
- shiveyarbles ( @shiveyarbles@beehaw.org ) 3•7 months ago
Are you fo sho?
Yep