How To Make A True Coding Language: Part 1
CSharpIsGud (962)

Im making this tutorial series because almost every language i've seen posted to repl talk doesn't use parsing algorithms and I think it would be nice to see some that do. There are a couple flavors of these languages, typically they come in 2 forms
1) They use string splitting and regular expressions

Technically you can call this "parsing" or a language of some sort.
But you will very quickly discover you run into syntax limitations like having to have a separator for a lot of things.
set:var,Hello World;print:var

2) They do nothing at all but define some classes or variables

I don't know how people get away with this and then tell you to calm down when someone calmly separates what it is from what it isn't. Even when put in the best possible words as to not directly attack the repl itself.

Which is why I have decided to create a tutorial on making a programming language in hopes people start making ones that don't have the above flaws.

This tutorial is going to go bottom to top using no dependencies at all and will show creation of a lexer all the way up to the hand made recursive-descent parser!

The Lexer (or scanner, tokenizer, whatever you wish to call it)

Located in

The other components will get their own files as they are created.


You are viewing a single comment. View All
CSharpIsGud (962)

@JaydenLiu1 People call them fake, because they don't have any real parsing done at all, cant do anything that a normal language can do easily.
And as to why everyone gets so annoyed every time someone posts one, is because they probably made one that actually took longer than an hour to do. Meanwhile someone posts 30 minutes worth of input if print print input print input if and people will defend that like its gods creation whenever someone realizes what it is. That's exactly what's wrong with them, they don't take much effort to make, some people have such a loose definition of what is a language around here that they don't have to care, and if someone does start to point out how it took less than 30 minutes to do they don't have to worry because most if not all of the people that bothered to even look at it are the ones that will just say they are "overreacting" or "hating"

Simply saying that fake vs real makes no sense, makes no sense when there is a very obvious line between what is a programming language using a well known parsing algorithm and what is a program reading a list of predefined commands from a terminal(hint: the underlying language its made in does all the work)

Here is a good example of what a "real" one looks like from DynamicSquid, specifically the syntax.
You can't just parse that with a bunch of input and if statements, and it functions like a language instead of a list of set in stone commands.