I followed this tutorial and I notice you never started on strings so after I did this one, I made a String type and now it works. So I just want to say thanks for making this tutorial it helped me a lot and now I know how to add new things to it. so thanks!
ive used this tutorial for 2 languages (mainly for fun) and i got to say that I love it! it goes over the logic without making a fuss about the non-important stuff. Thank you for your work! Would love to see a new part about structs/classes, but i guess that's a pretty big scope :')
Hi, you are so amazing bro I made my programming language in python but I stopped at loops because I didn’t know how to do it but you really help after making it in python I made a exe added it to my path and realized it was slow so I remade it in c++ Amazing series my guy
really enjoyed this series, i've been wanting to make my own language and this tutorial was pretty helpful, thanks! (also i think you forgot to add functionality for getting stuff from objects)
I sadly had some health issues arise earlier in the year and then I never got back into the series recently. However, I want to resume it sometime soon 🤠
I've been replicating this tutorial in Lua for the last couple of weeks and it works perfectly!. I have been playing with the idea of a transpiler for Lua for a couple of years now and in my current version I've been trying to develop a custom AST parser for my proposed language that I can later transpile to pure Lua, so your tutorial has been most helpful. Hope we can see and end to this series some day! Thanks for everything.
Thanks. I’m trying to find out how to improve my video quality before I start anything new. However I would love to make a new series which goes more in depth into say parsing, or compiling, type-checking etc ….
Hello there. Glad you like the video. I would love too show you those things in upcooming videos. However if you want a more personal approach then feel free to message me on discord and I would not mind hopping on a video call and answering and questions or showing some code samples. Cheers! tylerlaceby#9121 Is my discord
when do you think your going to add strings, lists/arrays, support for negative numbers (currently you have to type 0-[the number you want to be negative]), mabye even some basic logic like, not, or, and, less than, greater than, equal to, etc? Great tutorials btw, love em!
Hey dude, this series is an absolute lifesaver. I've been trying to find one that works for ages now! Any chance of strings, arrays, control flow, imports, or classes, or anything like that in the near future?
How would you parse an arrow function? Using the function keyword syntax, its easy to parse the parameters since thats the only reason parentheses would be there, but considering that the arrow follows the parentheses, how can the parser know not to parse the parentheses as a group? Can we expect arrow functions in the next part of this series?
Arrow syntax would just have its own token. An arrow token would follow the closing paren. Then on the FunctionExpression ast mode you can state whether the function is an arrow function. Take a look at how the website ASTExplorer does it and you will see arrow function are simply. Boolean added to the AST node for functions. As for parsing then it’s just a simple if check after the closing paren. If you see an arrow then you would eat the arrow and parse a Expression if you don’t you will e or t a Block for the body.
I’ll discuss this in the future but it is the exact same thing as a number type. It’s just a wrapper type over the js string primitive. I don’t think I’ll implement it as it is fundamentally the same as the null type and number types.
I have loved all of the tutorials! This also gave me a brand new look at TypeScript and it's functionalities! I got a suggestion for a tutorial; could you possibly add classes, or would that be too complicated?
I don’t want to make any promises lol but classes revolve around the idea of closures just like functions. Think of a class like a closed over environment where a class is a closed over Block. They both need to know where they were defined and they both can be instantiated at runtime. If you want help feel free to reach out. I also suggest checking out books like writing a interpreter in go as well as CraftingInterpreters
This is awesome! I have expanded on it even more. The one thing I am having trouble with though is adding in arrays and strings. Do you have any suggestions on how to do this?
I can definitely help you with those data types. Message me on discord and maybe Monday or tonight after work I can hop on a call and we can get those working. Cheers
I probably will finish the series with a few episodes. However I can’t say when that will happen. If you have any questions or wanna talk about the series I would be more than happy to do that. Reach out on discord if you want. Cheers
Well I’m glad you enjoy this series. Sadly I’m very inactive on TH-cam and don’t have good enough production quality to feel okay charging money 💰. But I hood you and other a still learn things from this. If you need anything or want related help please feel free to reach out on discord. Cheers
You would not in the lexer. Instead you would handle this in the parser. A negation is called a UnaryExpression and has a separate AST node. Unary nodes are things like -+!( += etc. this is a very high precedence node and is higher than a binary expression.
No just the basic constructs of a language. variables, scope, expressions, logic, loops, control-flow, and I added object access/member to show how it would be parsed as some people find them quiet tricky to get the precedendce correct.
You should continue with this series, so many other exciting things of a language that's left!
I followed this tutorial and I notice you never started on strings so after I did this one, I made a String type and now it works. So I just want to say thanks for making this tutorial it helped me a lot and now I know how to add new things to it. so thanks!
Yay! Yea I kinda stopped with the series sadly. I’m so happy you enjoyed and found use out of it.
my next step is to make while loops!@@tylerlaceby
ive used this tutorial for 2 languages (mainly for fun) and i got to say that I love it! it goes over the logic without making a fuss about the non-important stuff.
Thank you for your work! Would love to see a new part about structs/classes, but i guess that's a pretty big scope :')
I was kinda disappointed to find that this was your last video in the series but that just made me add more features!
😉
is there a chance you may continue this serie please :(
The rust inspiration is there lol
Awesome video as usual btw !
Haha thanks. I always like languages that have implied return statements inside of blocks.
Glad you enjoyed
Hi, you are so amazing bro I made my programming language in python but I stopped at loops because I didn’t know how to do it but you really help after making it in python I made a exe added it to my path and realized it was slow so I remade it in c++
Amazing series my guy
really enjoyed this series, i've been wanting to make my own language and this tutorial was pretty helpful, thanks! (also i think you forgot to add functionality for getting stuff from objects)
I sadly had some health issues arise earlier in the year and then I never got back into the series recently.
However, I want to resume it sometime soon 🤠
This series is amazing!!!
I've been replicating this tutorial in Lua for the last couple of weeks and it works perfectly!.
I have been playing with the idea of a transpiler for Lua for a couple of years now and in my current version I've been trying to develop a custom AST parser for my proposed language that I can later transpile to pure Lua, so your tutorial has been most helpful.
Hope we can see and end to this series some day!
Thanks for everything.
Bro same, I'm making this in luau aswell, also thanks Tyler, you definitely taught me something
@tylerlaceby when can we expect the next videos in the series???? I'm eagerly waiting for them!!!
Great series, quite nice. Will definitely suggest my friends at college!!
Это шикарно. Ты просто гений!
Absolutely love this series, have been following along but used Go instead! Any plans to pick this back up and cover any more concepts?
Thanks. I’m trying to find out how to improve my video quality before I start anything new. However I would love to make a new series which goes more in depth into say parsing, or compiling, type-checking etc ….
@@tylerlaceby Compiling would be awesome, it would be a good compliment to this interpreted series. An LLVM/ ASM compilation series would be great
Awesome. Can you show me how to do it with if ..else . statements?
Hello there. Glad you like the video. I would love too show you those things in upcooming videos. However if you want a more personal approach then feel free to message me on discord and I would not mind hopping on a video call and answering and questions or showing some code samples. Cheers!
tylerlaceby#9121 Is my discord
when do you think your going to add strings, lists/arrays, support for negative numbers (currently you have to type 0-[the number you want to be negative]), mabye even some basic logic like, not, or, and, less than, greater than, equal to, etc? Great tutorials btw, love em!
Hey bananamanreacts4972, if you still want strings and your on ts files then I can give you my version of strings that I made!
Hey dude, this series is an absolute lifesaver. I've been trying to find one that works for ages now! Any chance of strings, arrays, control flow, imports, or classes, or anything like that in the near future?
will you be doing If/for/while statements?
Definitely 👍
@@tylerlaceby you dont need it, when you can call functions recusivley
How would you parse an arrow function? Using the function keyword syntax, its easy to parse the parameters since thats the only reason parentheses would be there, but considering that the arrow follows the parentheses, how can the parser know not to parse the parentheses as a group?
Can we expect arrow functions in the next part of this series?
Arrow syntax would just have its own token. An arrow token would follow the closing paren. Then on the FunctionExpression ast mode you can state whether the function is an arrow function.
Take a look at how the website ASTExplorer does it and you will see arrow function are simply. Boolean added to the AST node for functions.
As for parsing then it’s just a simple if check after the closing paren. If you see an arrow then you would eat the arrow and parse a Expression if you don’t you will e or t a Block for the body.
And know I’m making a compiler lol I came back for the ast really helpful
Awesome. Yea i have a separate series on Pratt parsing which is only about parsing. Also I think it's much better done.
@@tylerlacebyohh I’ll check it out!
lets gooo
implementing string would be cool as well
I’ll discuss this in the future but it is the exact same thing as a number type. It’s just a wrapper type over the js string primitive.
I don’t think I’ll implement it as it is fundamentally the same as the null type and number types.
A wonderful video thx.
It just just missing the loops to make it perfect 👌
and if/elif/else conditions, as well as string type. But we can add it all by ourselves as this series build up understanding how it all works :)
I have loved all of the tutorials! This also gave me a brand new look at TypeScript and it's functionalities! I got a suggestion for a tutorial; could you possibly add classes, or would that be too complicated?
I don’t want to make any promises lol but classes revolve around the idea of closures just like functions.
Think of a class like a closed over environment where a class is a closed over Block. They both need to know where they were defined and they both can be instantiated at runtime.
If you want help feel free to reach out. I also suggest checking out books like writing a interpreter in go as well as CraftingInterpreters
@@tylerlaceby Thanks for replying! I'll just try for myself then and hopefully I will make it a success!
Hi, really good serie of videos, thanks for your work and its qualitu. I was wondering if you planned on continuing it?
Thanks!
Not this series. However I’m currently working on a new series in Go which will be much better imo.
Check on my discord for more news.
@@tylerlacebythanks for your reply, Iooking forward the new one 😊
GOAT
This is awesome! I have expanded on it even more. The one thing I am having trouble with though is adding in arrays and strings. Do you have any suggestions on how to do this?
I can definitely help you with those data types. Message me on discord and maybe Monday or tonight after work I can hop on a call and we can get those working.
Cheers
@@tylerlaceby Thank you! Just let me know when
My guy!
question are you gonna continue the call member expression for the interpreter?
I might get to objects too yea. I mainly wanted to show how to parse them as they can be tricky.
@@tylerlaceby ah ok
which design patterns have you implemented there?
awesome stuff
I wish you had also added conditionals and loops too.
Also loved the series. Learned so much!!!
I love you bro.
will there be more episodes?
Are you gonna continue the series??
I probably will finish the series with a few episodes. However I can’t say when that will happen.
If you have any questions or wanna talk about the series I would be more than happy to do that.
Reach out on discord if you want. Cheers
Honestly you could make a whole course on udemy (or other platform) from that and I would happily pay!
Well I’m glad you enjoy this series. Sadly I’m very inactive on TH-cam and don’t have good enough production quality to feel okay charging money 💰. But I hood you and other a still learn things from this.
If you need anything or want related help please feel free to reach out on discord.
Cheers
How would I differentiate between a subtraction and a negative number in the lexer?
You would not in the lexer. Instead you would handle this in the parser. A negation is called a UnaryExpression and has a separate AST node.
Unary nodes are things like -+!( += etc. this is a very high precedence node and is higher than a binary expression.
@@tylerlaceby Thank you
series is awesome! but how can i get it to be a different file format, like uhhh… .gay instead of .txt
vscode is a lot slower from the last time i used it.
will you be doing reflection?
No just the basic constructs of a language. variables, scope, expressions, logic, loops, control-flow, and I added object access/member to show how it would be parsed as some people find them quiet tricky to get the precedendce correct.
Will you be using LLVM (I am not sure if u even can outside c++)?
Love you pls keep em coming
What icon and theme are you using, thanks
Xcode theme I think