LLVM Tooling for C++

C++ is a both a fantastic language and a mess. It supports at least 4 programming paradigms (procedural, functional, object-oriented, template meta-programming). In some senses, many languages give you one great way to do things: C++ gives you every way and trusts you to use them well. With this flexibility comes problems that C++ seems to have beyond what other languages experience. Therefore, having effective tooling to develop and use C++ is essential....

January 22, 2017 · 3 min · 627 words · Robert Underwood

Interpreters Made Easy

The Interpreter pattern from the “Design Patterns: Elements of Reusable Object Oriented Software” can potentially be a very powerful pattern. It allows you to use a domain specific language to represent a complex computational situation. However, writing interpreters in practice can be tricky and time consuming. It really helps to know something about some fundamental parsing algorithms and techniques. The most naive approach to writing an interpret involves manually matching each possible next phrase and creating an if else soup to match each possible outcome....

January 15, 2017 · 3 min · 580 words · Robert Underwood