Remix.run Logo
joz1-k 3 days ago

I had exactly the same feeling as you after reading the article. And interestingly, all production parsers for all major languages are hand-written recursive descent parsers. On the other hand, if you inspect the actual code for these production parsers (even for newer languages like Swift, Scala, Kotlin, or Rust), the complexity and amount of code is still quite staggering.

taeric 3 days ago | parent [-]

Isn't a large portion of the code to get friendlier messages for the user?

joz1-k 3 days ago | parent [-]

Yes, that explains a lot of the complexity. Another reason is type checking/inferring and making the AST detailed enough for code analysis tools, such as code hinting in IDEs.