<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="https://blog.jez.io/feed/parsing.xml" rel="self" type="application/atom+xml" /><link href="https://blog.jez.io/" rel="alternate" type="text/html" /><updated>2026-01-21T18:17:55-05:00</updated><id>https://blog.jez.io/feed/parsing.xml</id><title type="html">Jake Zimmerman | Parsing</title><subtitle>A collection of blog posts about programming, software, types, programming languages, Sorbet, Vim, Markdown, and more.</subtitle><author><name>Jake Zimmerman</name></author><entry><title type="html">Parse Error Recovery in Sorbet: Part 4</title><link href="https://blog.jez.io/error-recovery-part-4/" rel="alternate" type="text/html" title="Parse Error Recovery in Sorbet: Part 4" /><published>2022-06-06T01:56:49-04:00</published><updated>2022-06-06T01:56:49-04:00</updated><id>https://blog.jez.io/error-recovery-part-4</id><author><name>Jake Zimmerman</name></author><category term="sorbet" /><category term="parsing" /><summary type="html"><![CDATA[This is the fourth post in a series about things I've learned while making improvements to Sorbet's parser. With the last post, I talked about some tools and techniques that I've found useful while hacking on Sorbet's Bison-based parser. This post is going to continue that theme by explaining in a little more detail the primary tool Bison has for adding error recovery to a parser—the special `error` token.]]></summary></entry><entry><title type="html">Is tree-sitter good enough?</title><link href="https://blog.jez.io/tree-sitter-limitations/" rel="alternate" type="text/html" title="Is tree-sitter good enough?" /><published>2022-05-30T04:43:46-04:00</published><updated>2022-05-30T04:43:46-04:00</updated><id>https://blog.jez.io/tree-sitter-limitations</id><author><name>Jake Zimmerman</name></author><category term="parsing" /><category term="tree-sitter" /><summary type="html"><![CDATA[While tree-sitter is a neat project with lots of valid use cases, it isn't a silver bullet for all parsing-related projects.]]></summary></entry><entry><title type="html">Parse Error Recovery in Sorbet: Part 3</title><link href="https://blog.jez.io/error-recovery-part-3/" rel="alternate" type="text/html" title="Parse Error Recovery in Sorbet: Part 3" /><published>2022-02-28T00:25:56-05:00</published><updated>2022-02-28T00:25:56-05:00</updated><id>https://blog.jez.io/error-recovery-part-3</id><author><name>Jake Zimmerman</name></author><category term="sorbet" /><category term="parsing" /><summary type="html"><![CDATA[This is the third post in a series about "things I've learned while making improvements to Sorbet's parser." Previously I discussed high level questions like why it's an important problem for Sorbet to solve and some approaches I decided not to take. This post switches gears to focus on specific tips and techniques I found useful while making parser changes.]]></summary></entry><entry><title type="html">Parse Error Recovery in Sorbet: Part 2</title><link href="https://blog.jez.io/error-recovery-part-2/" rel="alternate" type="text/html" title="Parse Error Recovery in Sorbet: Part 2" /><published>2022-02-22T03:56:34-05:00</published><updated>2022-02-22T03:56:34-05:00</updated><id>https://blog.jez.io/error-recovery-part-2</id><author><name>Jake Zimmerman</name></author><category term="sorbet" /><category term="parsing" /><category term="tree-sitter" /><summary type="html"><![CDATA[This is the second post in a series about "things I've learned while making improvements to Sorbet's parser." Specifically, it's about approaches I considered but decided against.]]></summary></entry><entry><title type="html">Parse Error Recovery in Sorbet: Part 1</title><link href="https://blog.jez.io/error-recovery-part-1/" rel="alternate" type="text/html" title="Parse Error Recovery in Sorbet: Part 1" /><published>2022-02-21T03:56:34-05:00</published><updated>2022-02-21T03:56:34-05:00</updated><id>https://blog.jez.io/error-recovery-part-1</id><author><name>Jake Zimmerman</name></author><category term="sorbet" /><category term="parsing" /><summary type="html"><![CDATA[I've spent a lot of time recently making Sorbet's parser recover from syntax errors when parsing. I didn't have any experience with this before getting started, no one told me what the good tools or techniques for improving a parser were, and none of the things I read quite described the ideas I ended up implementing. I figured I'd share the experience so that you can learn too.]]></summary></entry></feed>