Another attempt at a Z80 assembler.
- make code highly modular and loosely coupled
- keep syntax clean and simple. Avoid "clever" tricks, i.e. compound statements that require effort for a human to understand
- avoid using C preprocessor for anything beyond #include
- plugin-based architecture: multiple implementations of certain functionality could be used via clearly defined API
- test coverage for each function
- extensive commentary, almost as in literate programming style
- follow Google C Style Guide conventions as appropriate for C project
- use static code analyzers to look for potential problems
- use linter to enforce uniform code formatting
- avoid tabs, use Python style 2 space indent
- reference How to C in 2016 for good ideas
- use latest winflexbison
- Writing Your Own Toy Compiler Using Flex, Bison and LLVM
- great explanation of generating reentant parsers with flex/bison, local copy
- another example of reentrant flex/bison parser: 1, 2
- a sample CMakeLists.txt
- LUV lex and yacc tutorial
- Parsing arithmetic expressions - Bison and Flex
- Jonathan Engelsma lex/yacc video tutorial: lex and yacc
- Mozilla regexp reference
- MSDN regexp reference
- Interactive regex tester