@hackage hgom0.6
An haskell port of the java version of gom
Categories
License
LicenseRef-GPL
Maintainer
Paul Brauner <paul.brauner@inria.fr>
Links
- Homepage
- Documentation
- No source repository
- Changelog
- Security
Versions
Installation
Tested Compilers
Dependencies (0)
- Glob >=0.5
- HUnit >=1.2.2.1
- QuickCheck >=2
- base >=4 && <5
- containers >=0.2
- directory >=1.0.0.2 Show all…
Dependents (1)
@hackage/acme-everything
Package Flags
test
(off by default)
enable test support
HGom
An haskell clone of the original java Gom code generator.
Compilation
To compile hgom, install cabal-install and type the following.
cabal configure
cabal build
The hgom binary is generated in dist/build/hgom.
Installation
cabal install
Generate developer documentation
By default, cabal generates no documentation since only the executable is exported. Developers still can generate the modules' documentation as follows.
cabal haddock --executables \
--html-location='http://hackage.haskell.org/packages/archive/$pkg/latest/doc/html' \
--hyperlink-source
Only exported symbols are documented. Add --internal for unexported symbols
documentation.
The documentation index is then dist/doc/html/hgom/hgom/index.html.
Running hgom
Run hgom --help to get some basic help.
You can test the behaviour of hgom by running it as follows. Some examples
are valid files, other ones demonstrate hgom error messages.
hgom examples/simple.gom
hgom examples/big.gom
hgom examples/many_errors.gom
...
Test
The test suite is compiled only if the test flag is
set. For instance, run
cabal configure -ftest
cabal build
./dist/build/hgom/hgom --test "-a n"
or
cabal install -ftest
hgom --test "-a n"
where n is the number of generated random inputs for each test case.
For other arguments to the --test option, try hgom --test "--help".
Code Coverage
Code coverage can be tested as follows.
cabal build --ghc-options "-fhpc -fforce-recomp"
cd test/coverage
./coverage.sh
The documentation is generated in test/coverage/html.
Benchmark
There is some benchmark in test/bench that generates bigger and bigger gom
files and runs hgom and gom on them, measuring the gom/hgom ratio
concerning the number of generated lines (using
sloccount) and the elapsed time.
cd test/bench
make
It takes some time. The generated files can be plotted using gnuplot for instance.
Differences with gom
Better
- faster !
- a far less permissive checker
- smaller code, compiles much faster
- almost 100% code coverage,
- unit tests using QuickCheck, both on compiler data structures and generated code
- regression tests for parser and checker
- more things optional: visitable, checker, ...
toHaskell,makeRandom,depthandsizemethods generation (optional)- smaller code for some generated methods (string escaping factorized for instance)
- faster code for some generated methods (less function calls, more constants)
- faster parser (
from*) methods: don't use an intermediate ATerm representation - pretty-printed generated code, optional compact (no indentation) option
Worse
- no hooks!
- no ant task
- imports only builtins
- generates no comments
Different
- slightly different command-line arguments syntax