TL;DR This article aims to be the simplest introduction to constructing an LL(1) parser in Go, in this case for parsing SQL queries. It assumes minimal programming competence (functions, structs, ifs and for-loops). Here’s the complete parser repository if you want to skip to results: github.com/marianogappa/sqlparser Simplification disclaimer To make things simple we’re gonna descope sub-selects,