---++ Introduction
[[StrategoMisc][stratego-misc]] is a small, but versatile package of Stratego modules, implementing strategies and tools that are not (yet) in the SSL.
It might be handy for others as well, so here it is, online.
---++ Contained modules
Currently, stratego-misc consists of the following modules:
* *[[#TermColor][term-color]]*: Produce color output in your terminal, directly from Stratego! Very cool indeed, handy as well. Distinguish the various parts in the usually huge Term-dumps, while debugging, by colorizing them.
* *[[#OutputControl][output-control]]*: Improved control over (debug-) output. More intuitive verbosity levels and nested, tree-like debug-output.
* *[[#DynamicRulesTools][dynamic-rules-tools]]*: A first approach towards generalizing the various strategies that operate on dynamic rules and the tables behind them. Also a (debugging-) pretty printer for dynamic rules.
#TermColor
---+++ Module term-color
Produce color output in your terminal, directly from Stratego! Very cool indeed, handy as well. Distinguish the various parts in the usually huge Term-dumps, while debugging, by colorizing them.
*Sample output (in a regular terminal):*
#OutputControl
---+++ Module output-control
Improved control over (debug-) output. More intuitive verbosity levels and nested, tree-like debug-output.
*Sample output when using so-called output-nests (in a regular terminal):*
---++++ Usage
Use =output-nest(s|text)= for entering a new output-level.
HandleFunTpSpec =
output-nest(
?FunTpSpec(f, tpF)
; rules(Id2Type: f -> tpF)
| "HandleFunTpSpec")
Use =on-debug(|color, text)= instead of debug:
tpV'*
The equivalent of =say= is also available: =on-say(|color, text)=.
---++++ Verbosity
output-control checks whether the =--verbose= flag was set, and defaults to 0 otherwise. The possible levels are:
lvlError = 0 // not used
lvlInfo = 1 // not used
lvlTalkative = 2 // print entering and exiting of output-nests
lvlChatty = 3 // id. and print input and output terms of each output-nest
lvlDebug = 4 // id. and show any on-debug/on-say output
lvlVomit = 5 // not used
---++++ Practical usage
Make sure your toplevel strategy supports the =--verbosity= flag (using =io-wrap=, =output-wrap=, or otherwise).
When piping your program output into =less=, make sure =stderr= is redirected into =stdout= and =less= is called with color-support:
==[adam@madras:lib>== =parse-tfof -i test1.tfof | ./TFOF-InferTypes --verbose 4 2>&1 | less -R=
#DynamicRulesTools
---+++ Module dynamic-rules-tools
This has been superseded by =dynamic-rules-refactored= in the SSL, since the introduction of the new dynamic rules in [[StrategoRelease010][Stratego 0.10]].
---++ Documentation
Generated documentation by [[ExtendibleDocumentationGenerator][xdoc]] can be found at
http://catamaran.labs.cs.uu.nl/docs/stratego-misc/api/
---++ Download and Installation
Interested in using stratego-misc yourself? You can download the latest working distribution (tar.bz2) here:
[[http://losser.st-lab.cs.uu.nl/~mbravenb/dailydist/stratego-misc/src/stratego-misc-head.tar.gz][stratego-misc-head.tar.gz]]
Unpack the tarball and configure the package with the usual --with-strategoxt, --with-sdf and --with-aterm.
See the INSTALL file for detailed instructions.
-- Main.ArthurVanDam - 02 Feb 2004