| ▲ | Crafting Interpreters(craftinginterpreters.com) | |||||||
| 32 points by tosh 5 hours ago | 5 comments | ||||||||
| ▲ | azhenley 2 hours ago | parent | next [-] | |||||||
The two most popular discussions of this fantastic book: 2020 with 777 points: https://news.ycombinator.com/item?id=22788738 2024 with 607 points: https://news.ycombinator.com/item?id=40950235 | ||||||||
| ▲ | rohitpaulk an hour ago | parent | prev | next [-] | |||||||
In case anyone finds it useful, we (CodeCrafters) built a coding challenge as a companion to this book. The official repository for the book made this very easy to do since it has tests for each individual chapter. Link: https://app.codecrafters.io/courses/interpreter/overview | ||||||||
| ▲ | stevefan1999 2 hours ago | parent | prev | next [-] | |||||||
Really I would love to know how parse context sensitive stuff like typedef which will have "switched" syntax for some tokens. Would like to know things like "hoisting" in C++, where you can you the class and struct after the code inside the function too, but I just find it hard to describe them in rigorous formal language and grammar. Hacky solution for PEG such as adding a context stack requires careful management of the entry/exit point, but the more fundamental problem is that you still can't "switch" syntax, or you have to add all possible syntax combination depending on the numbers of such stacks. I believe persistent data structure and transactional data structure would help but I just couldn't find a formalism for that. | ||||||||
| ||||||||
| ▲ | Nora23 an hour ago | parent | prev [-] | |||||||
One of the best resources for learning compiler design. The web version being free is incredibly generous. | ||||||||