This is a tutorial for how to write a complete parser for a simple calculator using LALRPOP.

If you are unfamiliar with what a parser generator is, you should read Crash course on parsers first.

This tutorial is still incomplete. Here are some topics that I aim to cover when I get time to write about them:

• Advice for resolving shift-reduce and reduce-reduce conflicts
• Passing state and type/lifetime parameters to your action code (see e.g. this test invoked from here).
• Location tracking with @L and @R (see e.g. this test).
• Integrating with external tokenizers (see e.g. this test invoked from here).
• Conditional macros (no good test to point you at yet, sorry)
• Fallible action code that produces a Result (see e.g. this test invoked from here).
• Converting to use LALR(1) instead of LR(1) (see e.g. this test invoked from here).
• Plans for future features