To run BNFC: bnfc -m Calc.cf make To run the interpreter: echo "1+2*3" | runhaskell icalc.hs To run the compiler: echo "1+2*3" | runhaskell ccalc.hs java Foo Hand-written files: Calc.cf -- bnfc grammar Interpreter.hs -- interpreter definition CodeGenerator.hs -- code generator definition icalc.hs -- interpreter main function ccalc.hs -- code generator main function BNFC-generated files: AbsCalc.hs -- abstract syntax LexCalc.hs -- lexer generated by Alex LexCalc.x -- lexer source for Alex ParCalc.hs -- parser generated by Happy ParCalc.y -- parser source for Happy PrintCalc.hs -- printer (from abstract syntax to strings) SkeletonCalc.hs -- skeleton for pattern matching