parenthesize

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"])]




Statistics


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