Simple C grammar for Haskell Parsec, MegaParsec or Happy

1.2k Views Asked by At

I develop a preprocessor transpiling subset of C statements into gcc _asm statements. For this project, I will be happy to reuse existing C statements parser written with any popular Haskell technology, or just start with some simple C subset paser in order to avoid redoing existing work.

Unfortunately, so far I found grammars just for everything but C. And while I can start with Parsec grammars for Java/Go, it seems that MegaParsec is preferable choice?

I can quickly develop grammar for small C subset, but ready-to-use grammar for larger C subset will allow me to completely skip the development of C statement parser and focus on the meat of project - asm code generation.

Eventually, it may turn into LLVM pass transpiling parts of C++ code, but for quick prototype, I prefer Haskell, especially if I can find ready-to-use parser.

1

There are 1 best solutions below

0
Bulat On

There is Haskell library parsing C99 grammar (and C11 partially):

https://hackage.haskell.org/package/language-c