Question: Is there any symbol table implementation in stratego?
Yes. There are several ways to go about using symbol table like
functionality in Stratego programs.
First of all you could the strategies in module tables.str in
SSL, which provides strategies such as
<table-push> (st, key, val)
for pushing a new binding of val to key in symbol table st. These
strategies maintain a stack of bindings for each key.
This method is rather low-level though.
The preferred method is to use dynamic rules, rewrite rules 'generated' at run-time can be used to bind any values to any
keys and can be applied as ordinary rules. The liveness of these
bindings can be regulated using the scope mechanism
{| Rule : strat |}
The dynamic rule mechanism takes care of storing information in
a table, retrieving it, and cleaning up after leaving a scope.
See the paper '
Scoped Dynamic Rewrite Rules' for an explanation
of this method. The examples in the paper are examples of the
use of a symbol table, but maybe not the ones you are looking
for. More examples can be found in the implementation of the
Tiger compiler,
for instance, in the typechecker and the translation to IR.
--
EelcoVisser - 23 Jul 2003