Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
guess who just wrote an entire LR(0) parser before realizing the grammar is too complex for an LR(0) parser
Many, many, many iterations of parsing later and we're just gonna hand-roll a LR parser now. Might make a custom Parser Generator later, but this (should) work fine for now
Got the Lexer somewhat designed; Just gotta actually throw it in.
Oh, and I Decided on a Bottom-up Parser design w/ separate Lexer & AST generation.
The Beginning.
So the other day I was doing a project in Rust, particularly using Const Generics to do some cool stuff with Matricies and Compile-time Verification of arithmetic. However, as I tried to implement the Kronecker Product (if you don't know what that is; good), I encountered limitations with the current implementation of Const Generic Expressions.
This, combined with a few other small gripes with the language, and running on 2am energy; I had the idea. If Rust is so bad, why not make my own? And GLang was born.
Some Goals I have with this language is;
- Similar Syntax to Rust (my beloved)
- Simple & Robust Type System
- Easy binding with C Libraries
- Actually usable Const Generics
- Memory Safety via Borrows & Ownership
- (Potentially) Async-forward Design
So far just a simple Bazel project to make a bootstrapper in C. This Bootstrapper is just a simple compiler for the language, feature complete enough to compile a GLang project complex enough to implement itself. That's right; Compiler Inception. I chose to write this in C instead of Rust for one simple reason; LLVM.
I'm not insane enough to write a full compiler; complete with an optimization system, linker system, and compilation for target systems (Assembly D:). So, like Rust, I'll be using LLVM to actually do the hard part of compiling to a usable program. LLVM is written in C++, and does have a C API, alongside bindings in Rust. However I thought it might be easier to just remove a layer of abstraction and just work directly with C. It had also been a while since I've worked with C, so I thought it might be a fun challenge to return to my roots.
Whether I get very far in this; I have no clue. A fully functional Programming Language is a massive project and incredibly stupid idea [INSERT XKCD-927 HERE], however I excel in stupidity, so hopefully this doesn't get dropped after 30 seconds :3