Mini-rust in Rust 005: Making our lexer an iterator

November 29, 2024 [Programming, Programming Languages, Rust, Tech, Videos] #mini-rust
mini-rust (38 part Series)
Mini-rust in Rust 001: Lexing an int
Mini-rust in Rust 002: Errors while lexing
Mini-rust in Rust 003: Much prettier errors
Mini-rust in Rust 004: Refactoring our lexer
Mini-rust in Rust 005: Making our lexer an iterator
Mini-rust in Rust 006: Parsing an operation
Mini-rust in Rust 007: Evaluating an operation
Mini-rust in Rust 008: Refactoring our parser
Mini-rust in Rust 009: Handling parsing errors
Mini-rust in Rust 010: Lexing an assignment
Mini-rust in Rust 011: Parsing an assignment plus expression
Mini-rust in Rust 012: Parsing with backtracking
Mini-rust in Rust 013: Fixing a bug in our lexer
Mini-rust in Rust 014: Evaluating an assignment
Mini-rust in Rust 015: Parsing a typed assignment
Mini-rust in Rust 016: Tidying our parser
Mini-rust in Rust 017: Handling float literals
Mini-rust in Rust 018: Type checking, the happy path
Mini-rust in Rust 019: Type checking an actual type error
Mini-rust in Rust 020: Gaps in our type checker
Mini-rust in Rust 021: Including type information in our syntax tree
Mini-rust in Rust 022: Stop lying about types in errors
Mini-rust in Rust 023: Refactor to share structure of the syntax tree
Mini-rust in Rust 024: Lexing the <= sign
Mini-rust in Rust 025: Parsing let mut
Mini-rust in Rust 026: Parsing an empty while loop
Mini-rust in Rust 027: Parsing blocks of code
Mini-rust in Rust 028: Lexing plus-equals
Mini-rust in Rust 029: Parsing plus-equals
Mini-rust in Rust 030: Expressions after while loops
Mini-rust in Rust 031: Getting "while" through the type checker
Mini-rust in Rust 032: Supporting a Unit type and type checking mutations
Mini-rust in Rust 033: Evaluating operators like plusequals and timesequals
Mini-rust in Rust 034: Our first program, actually working
Mini-rust in Rust 035: Tidying up the evaluator
Mini-rust in Rust 036: Evaluating code blocks
Mini-rust in Rust 037: Complex expressions in mutation statements
Mini-rust in Rust 038: Avoiding a String allocation for each token

Our lex function returns an iterator, but in the implementation we were faking it. Let's do it properly.

You can find the source code at codeberg.org/andybalaam/milk and more of my stuff at artificialworlds.net