The first post in a series on writing a programming-language parser in Rust. In this post, I give a high-level introduction to parsing, discuss different types of grammars and parsers, and give an overview of the most popular Rust crates for generating a parser from a grammar. In future posts, I’ll dive deep into implementing parsers for WDL, a domain-specific language for describing computational workflows.