dishsoap Tech Lexing is done using Logos Parsing is done using a handwritten recursive descent parser, that makes use of Pratt parsing The rest is done using LLVM through llvm-sys References: LLVM Kaleidoscope Tutorial Using LLVM from Rust to generate WebAssembly binaries by Jay Phelps Pratt Parsers: Expression Parsing Made Easy by Bob Nystrom LLVM C interface documentation