MENU

Fun & Interesting

Implementing a Lox interpreter in Rust

Jon Gjengset 68,513 7 months ago
Video Not Working? Fix It Now

For some time I've been looking for an opportunity to do a stream on writing a parser + interpreter for... something. Anything really. I've wanted to implement a parser following matklad's excellent article on Pratt parsing ( https://matklad.github.io/2020/04/13/simple-but-powerful-pratt-parsing.html ), though honestly anything in the area of parsing would do. Well, CodeCrafters have recently released a new challenge in beta that follows Robert Nystrom's Crafting Interpreters book ( https://craftinginterpreters.com/ ), so I jumped at the opportunity. Join me in working through the challenges, or try it yourself first and compare notes after the fact! You can access the challenge over at https://app.codecrafters.io/join/interpreter?via=jonhoo , which also gives you 7 days free access, or in free source form (without the nice infrastructure) at https://github.com/codecrafters-io/build-your-own-interpreter . You can find my solution code over at https://github.com/jonhoo/lox You can join my Discord at https://discord.jonhoo.eu/ 0:00:00 Introduction 0:07:36 What is compilation? 0:28:54 The Lox language 0:44:26 Lexing single-character tokens 1:40:31 Lexing multi-character tokens 2:14:18 Lexing numbers 2:47:54 Lexer errors 3:05:37 Lexing comments 3:15:53 Lexing strings 3:29:13 Printing numbers 3:36:09 Outlining the (Pratt) parser 4:16:41 Parsing expressions 5:01:18 Parsing special statements 5:58:56 Extract out statement parser 6:38:42 Finish up expression parser 6:49:34 Printing token trees 6:59:47 Trying out the parser 7:29:13 Aligning with expected output 7:37:02 Tests falling like dominoes 7:50:41 Outro Live version with chat: https://youtube.com/live/FdZmJ0DAmn4

Comment