Any specific resources you've used that you could recommend in line with compiler construction?
I wrote a C compiler* using flex [1] and bison [2] that generated MIPS code. The biggest downside was the rather complex glue code.
At some point ANTLR [3] looked promising, but these days I'd probably write a lexer and recursive descent parser by hand, then generate LLVM IR [4].
[1] https://github.com/westes/flex
[2] https://www.gnu.org/software/bison/
* for a subset of the full C89 spec