I'm checking the examples and for C4.cf is not possible to compile the generated code. Bnfc is generating for the Print*.ml file something like: concatD [prtExp0 0 exp0 ; prtOp 0 op ; prtExp0 0 exp] where 'prtExp0' should be instead 'prtExp'. If I change manually this code it compiles but the same occurs for the file Show*.ml, it generates showExp0 instead of showExp Again, after this changes the code compiles an works. Seems to be just a small bug.