File | parenthesize.str |
Author | unknown |
Since | unknown |
This module defines a generic strategy for placing parentheses inabstract syntax trees based on priority and associativity declarations.
Reference
Eelco Visser. Syntax Definition for Language Prototyping. PhD Thesis,University of Amsterdam, 1997.
Typical usage: (from module Tiger-Ensugar in the tiger/tiger-frontpackage)
TigerParenthesize =!Seq([<id>])
tiger-parenthesize =parenthesize(TigerParenthesize, tiger-priorities)
tiger-priorities =![(None, ["Uminus","FieldVar","Subscript"]),(Some("left"), ["Power"]),(Some("left"), ["Times","Divide"]),(Some("left"), ["Plus","Minus"]),(Some("non-assoc"), ["CPlus","CMinus","Eq","Neq","Gt","Lt","Geq","Leq"]),(Some("left"), ["And"]),(Some("left"), ["Or"]),(None, ["Array"]),(None, ["Assign"]),(Some("right"), ["If","While","For"])]
General | |
Lines of code | 70 |
Stratego | |
Module number | 1 (100% documented) |
Constructor number | 0 |
Overlay number | 0 |
Strategy number | 6 (0% documented) |
Rule number | 6 (0% documented) |
DynamicRule number | 3 (0% documented) |
Strategy summary |
||
GenGreaterThan | n/a | parenthesize.str |
GenLeftAssoc | n/a | parenthesize.str |
GenRightAssoc | n/a | parenthesize.str |
init-parenthesation-rules | n/a | parenthesize.str |
parenthesize(Strategy paren, Strategy prios) | n/a | parenthesize.str |
parenthesize(Strategy paren) | n/a | parenthesize.str |
Rule summary |
||
Disambiguate(Strategy paren) | n/a | parenthesize.str |
Disambiguate(Strategy paren) | n/a | parenthesize.str |
gen-left | n/a | parenthesize.str |
gen-non-assoc | n/a | parenthesize.str |
gen-none | n/a | parenthesize.str |
gen-right | n/a | parenthesize.str |