
| Key: |
STR-44
|
| Type: |
Improvement
|
| Status: |
Closed
|
| Resolution: |
Fixed
|
| Priority: |
Major
|
| Assignee: |
Eelco Visser
|
| Reporter: |
Anonymous
|
| Votes: |
0
|
| Watchers: |
1
|
|
|
|
Original Estimate:
|
Unknown
|
Remaining Estimate:
|
Unknown
|
Time Spent:
|
Unknown
|
|
Issue Links:
|
Incorporate
|
|
This issue incorporates:
|
|
STR-19
Explicit scope identification for dyn...
|
|
|
|
STR-18
Application of "extend dynamic rules...
|
|
|
|
|
Solve
|
|
This issue will solve:
|
|
STR-8
Scopes and Undefined are reserved terms
|
|
|
|
|
|
|
|
Dynamic rules are used widely in Stratego programming and for other problems than originally envisioned. The implementation was extended
with operations for saving and restoring tables, intersection different tables, and rules producing a set (list) of results. It is
time that the whole implementation of dynamic rules is redesigned to
accomodate all these features in a clean manner.
Requirements:
* necessary operations:
- add rule
- lookup rule
- remove rule
- extend rule
- new scope
- end scope
- label scope
- indicate scope of rule using label
- save ruleset
- restore ruleset
- intersection / union / ... of rulesets
- change set (to delay changes to rule table)
* all operations should be efficient in time and space
- no cloning of entire table for save/restore
- add, lookup, remove should be O(1) or O(s), where
s is the number of enclosing scopes
- entering/exiting scope should be O(1)
- saving and restoring should be O(1)
- intersection ... should be O(n) (n number of rules)* extensions
- 'extend' rules (bagof)
- 'labels' to indicate scope (instead of override)
|
|
Description
|
Dynamic rules are used widely in Stratego programming and for other problems than originally envisioned. The implementation was extended
with operations for saving and restoring tables, intersection different tables, and rules producing a set (list) of results. It is
time that the whole implementation of dynamic rules is redesigned to
accomodate all these features in a clean manner.
Requirements:
* necessary operations:
- add rule
- lookup rule
- remove rule
- extend rule
- new scope
- end scope
- label scope
- indicate scope of rule using label
- save ruleset
- restore ruleset
- intersection / union / ... of rulesets
- change set (to delay changes to rule table)
* all operations should be efficient in time and space
- no cloning of entire table for save/restore
- add, lookup, remove should be O(1) or O(s), where
s is the number of enclosing scopes
- entering/exiting scope should be O(1)
- saving and restoring should be O(1)
- intersection ... should be O(n) (n number of rules)* extensions
- 'extend' rules (bagof)
- 'labels' to indicate scope (instead of override) |
Show » |
|
|