The ruler-core package

[Tags: lgpl, program]

Ruler-core Attribute Grammar


[Skip to ReadMe]

Properties

Version1.0
Change logNone available
Dependenciesarray, base (==4.*), containers, directory, fgl, filepath, haskell98, mtl, uuagc (>=0.9.26), uulib [details]
LicenseLGPL
CopyrightArie Middelkoop
MaintainerArie Middelkoop <ariem@cs.uu.nl>
StabilityExperimental
CategoryDevelopment
Home pagehttp://www.cs.uu.nl/wiki/HUT/WebHome
Executablesruler-core
UploadedWed Dec 1 14:17:50 UTC 2010 by ArieMiddelkoop
Downloads231 total (11 in last 30 days)
Votes
0 []
StatusDocs not available [build log]
All reported builds failed as of 2015-05-21 [all 2 reports]

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for ruler-core-1.0

Ruler-core

Ruler-core is an attribute grammar preprocessor, with a number of extensions to deal with (inference)-rule based systems.

How to get it to run:

1) checkout the repository or obtain the sources in another way
2) run cabal-install of ruler-core. This will install the dependencies, but will fail to build ruler-core itself.
3) run the cabal-files manually. The following is a trace:

$ runghc Setup.hs configure --user
Configuring ruler-core-0.9...


$ runghc Setup.hs build
Preprocessing executables for ruler-core-0.9...
"processing: src/Ast.ag"
"processing: src/Transform.ag"
"processing: src/Errs.ag"
Building ruler-core-0.9...
[ 1 of 11] Compiling Env              ( src/Env.hs, dist/build/ruler-core/ruler-core-tmp/Env.o )
[ 2 of 11] Compiling Pretty           ( src/Pretty.hs, dist/build/ruler-core/ruler-core-tmp/Pretty.o )
[ 3 of 11] Compiling Common           ( src/Common.hs, dist/build/ruler-core/ruler-core-tmp/Common.o )
[ 4 of 11] Compiling Ast              ( dist/build/ruler-core/ruler-core-tmp/Ast.hs, dist/build/ruler-core/ruler-core-tmp/Ast.o )
[ 5 of 11] Compiling DepAnalysis      ( src/DepAnalysis.hs, dist/build/ruler-core/ruler-core-tmp/DepAnalysis.o )
[ 6 of 11] Compiling Opts             ( src/Opts.hs, dist/build/ruler-core/ruler-core-tmp/Opts.o )
[ 7 of 11] Compiling Errs             ( dist/build/ruler-core/ruler-core-tmp/Errs.hs, dist/build/ruler-core/ruler-core-tmp/Errs.o )
[ 8 of 11] Compiling Transform        ( dist/build/ruler-core/ruler-core-tmp/Transform.hs, dist/build/ruler-core/ruler-core-tmp/Transform.o )
[ 9 of 11] Compiling Parser           ( src/Parser.hs, dist/build/ruler-core/ruler-core-tmp/Parser.o )
[10 of 11] Compiling Scanner          ( dist/build/ruler-core/ruler-core-tmp/Scanner.hs, dist/build/ruler-core/ruler-core-tmp/Scanner.o )
[11 of 11] Compiling Main             ( src/Main.hs, dist/build/ruler-core/ruler-core-tmp/Main.o )
Linking dist/build/ruler-core/ruler-core ...


To see a list of command-line options:
$ ./dist/build/ruler-core/ruler-core 
No AG source file specified.
Usage: imp-visits <OPTION ...> <ag-file> ...
  -o path  --output=path  output .hs file
  -v       --verbose      verbose output
           --pretty       pp AST to STDOUT
           --tokens       print tokens to STDOUT
           --haskell      generate Haskell code (default)
           --js           generate Javascript code
  -f       --force        force code generation
           --nodata       do not generate data types
           --graph=path   output .dot file
           --noline       do not generate LINE pragmas


Try an example:
$ ./dist/build/ruler-core/ruler-core examples/CycRepmin.rul -o test.hs
$ ghci test.hs
GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[1 of 1] Compiling CycRepmin        ( test.hs, interpreted )
Ok, modules loaded: CycRepmin.
*CycRepmin> main
Loading package syb-0.1.0.2 ... linking ... done.
Loading package base-3.0.3.2 ... linking ... done.
Loading package mtl-1.1.0.2 ... linking ... done.
Tree_Bin {l_Tree_Bin = Tree_Leaf {x_Tree_Leaf = 1}, r_Tree_Bin = Tree_Bin {l_Tree_Bin = Tree_Leaf {x_Tree_Leaf = 1}, r_Tree_Bin = Tree_Leaf {x_Tree_Leaf = 1}}}
*CycRepmin>