From 5c7eb27a118ea24febaa4b5af66b344d3d847d30 Mon Sep 17 00:00:00 2001 From: Lucas Kramer Date: Thu, 9 Apr 2020 15:09:32 -0500 Subject: [PATCH 1/4] Add more utility traversal strategies from Stratego's standard library --- grammars/silver/rewrite/Strategy.sv | 48 +++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/grammars/silver/rewrite/Strategy.sv b/grammars/silver/rewrite/Strategy.sv index b2b532eb0..3514ddd27 100644 --- a/grammars/silver/rewrite/Strategy.sv +++ b/grammars/silver/rewrite/Strategy.sv @@ -196,6 +196,48 @@ top::Strategy ::= s::Strategy forwards to s <* all(topDown(s)); } +abstract production downUp +top::Strategy ::= s1::Strategy s2::Strategy +{ + forwards to s1 <* all(downUp(s1, s2)) <* s2; +} + +abstract production allBottomUp +top::Strategy ::= s::Strategy +{ + forwards to all(allBottomUp(s)) <+ s; +} + +abstract production allTopDown +top::Strategy ::= s::Strategy +{ + forwards to s <+ all(allTopDown(s)); +} + +abstract production allDownUp +top::Strategy ::= s1::Strategy s2::Strategy +{ + forwards to s1 <+ all(allDownUp(s1, s2)) <+ s2; +} + +abstract production someBottomUp +top::Strategy ::= s::Strategy +{ + forwards to some(someBottomUp(s)) <+ s; +} + +abstract production someTopDown +top::Strategy ::= s::Strategy +{ + forwards to s <+ some(someTopDown(s)); +} + +abstract production someDownUp +top::Strategy ::= s1::Strategy s2::Strategy +{ + forwards to s1 <+ some(someDownUp(s1, s2)) <+ s2; +} + abstract production onceBottomUp top::Strategy ::= s::Strategy { @@ -208,6 +250,12 @@ top::Strategy ::= s::Strategy forwards to s <+ one(onceTopDown(s)); } +abstract production onceDownUp +top::Strategy ::= s1::Strategy s2::Strategy +{ + forwards to s1 <+ one(onceDownUp(s1, s2)) <+ s2; +} + abstract production innermost top::Strategy ::= s::Strategy { From 6fcebb482b1c1752794dd7d35a7a5678eb7228b3 Mon Sep 17 00:00:00 2001 From: Eric Van Wyk Date: Fri, 10 Apr 2020 09:24:29 -0500 Subject: [PATCH 2/4] an updated README more appropriate for the DRUM (#360) * an updated README more appropriate for the DRUM * fix required Java version --- README.md | 81 +++++++++++++++++++++++-------------------------------- 1 file changed, 33 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 2169e614d..656f34278 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,5 @@ # Silver -Silver is an attribute grammar-based language for the modular development of composable language extensions. - -See [About Silver](#about-silver) below for more info. - -See [The Silver Install Guide](http://melt.cs.umn.edu/silver/install-guide) for detailed information on how to get Silver set up. - -## Prerequisites - -Silver requires: Java 7+, Ant, Bash, and wget. It can run on Linux, MacOS, and Windows Subsystem for Linux (WSL) in Windows 10. - -Silver is written in Silver, which means after checkout, you need initial jars. You can download these with a helpful script: - -``` -./update -``` - -This will `git pull` to update, download jars, and clear any files generated by older versions of Silver. -A one-stop-shop for updating after the initial clone. - - -# About Silver - Silver is an extensible attribute grammar system that support many modern extensions to Knuth's original design. These include higher-order attributes, reference attributes, forwarding, aspects, @@ -29,54 +7,61 @@ and collections attributes. Its type system support parametric polymorphism. Silver is distributed with Copper, a parser and context-aware scanner generator. -Please note that Silver is a research project and while we do endeavor -to create useful and quality software there may be bugs and missing -functionality. Consult with us if you wish to use Silver for -"serious" work. We otherwise make no guarantees about the features or -performance of Silver. +It is designed for the modular development of composable language +extensions, with language features and analyses to support this. + +## Using silver + +Silver requires Java 8, Ant, Bash, and wget. It can run on Linux, MacOS, and Windows Subsystem for Linux (WSL) in Windows 10. + +See [The Silver Install Guide](http://melt.cs.umn.edu/silver/install-guide) +for detailed information on how to get Silver set up. + +Silver is written in Silver, which means after cloning the GitHub +repository you still need the executable Java jar files. You can download +these by running the ``update`` script in this repository. This will do a +`git pull` to update, then download jars, and clear any files generated +by older versions of Silver. A one-stop-shop for updating after the +initial clone. + +## Authors and contributors +Silver is currently developed and maintained by * Ted Kaminski (tedinski@cs.umn.edu) +* Lucas Kramer (krame505@cs.umn.edu) * Eric Van Wyk (evw@cs.umn.edu) -Minnesota Extensible Language Tools (MELT) Group -Department of Computer Science and Engineering -University of Minnesota -http://melt.cs.umn.edu +Past contributors include Derek Bodin, Lijesh Krishnan, and Jimin Gao. +It is developed by the Minnesota Extensible Language Tools (MELT) Group +(http://melt.cs.umn.edu) at the Department of Computer Science and Engineering (https://cs.umn.edu) at the University of Minnesota (https://umn.edu). -## The Silver web site -Downloads, documentation, and related papers are available on the -Silver web site: +## Websites and repositories -http://melt.cs.umn.edu/silver +Downloads, documentation, and related papers are available on the +Silver web site at http://melt.cs.umn.edu/silver Information about Copper and sample language frameworks developed with -Silver can be found on the MELT Group web site: - +Silver can be found on the MELT Group web site at http://melt.cs.umn.edu +Actively-developed versions of this software are available on GitHub at +https://github.com/melt-umn/silver. -## Acknowledgements - -Silver is currently developed and maintained by - -* Ted Kaminski (tedinski@cs.umn.edu) -* Lucas Kramer (krame505@cs.umn.edu) -* Eric Van Wyk (evw@cs.umn.edu) +Archival versions of this software are permanently available on the Data +Repository of the University of Minnesota at https://doi.org/10.13020/D6QX07. -Past contributors include Derek Bodin, Lijesh Krishnan, and Jimin Gao. +## Acknowledgements We are very grateful to the National Science Foundation, the McKnight Foundation, DARPA, the University of Minnesota, and IBM for funding different aspects of our research and the development of Silver and -Copper. +Copper. ## Licensing - Silver and Copper are distributed under the GNU Lesser General Public License. See the files COPYING and COPYING.LESSER for details of these licenses. More information can be found at http://www.gnu.org/licenses/. - From 30dea191dc6871f607db315221c3dbed70205932 Mon Sep 17 00:00:00 2001 From: Eric Van Wyk Date: Sat, 18 Apr 2020 12:48:19 -0500 Subject: [PATCH 3/4] small update for archive --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 656f34278..90a922b6c 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,10 @@ initial clone. ## Authors and contributors Silver is currently developed and maintained by -* Ted Kaminski (tedinski@cs.umn.edu) * Lucas Kramer (krame505@cs.umn.edu) * Eric Van Wyk (evw@cs.umn.edu) -Past contributors include Derek Bodin, Lijesh Krishnan, and Jimin Gao. +Past contributors include Ted Kaminski (tedinski@cs.umn.edu), Derek Bodin, Lijesh Krishnan, and Jimin Gao. It is developed by the Minnesota Extensible Language Tools (MELT) Group (http://melt.cs.umn.edu) at the Department of Computer Science and Engineering (https://cs.umn.edu) at the University of Minnesota (https://umn.edu). @@ -39,8 +38,8 @@ It is developed by the Minnesota Extensible Language Tools (MELT) Group ## Websites and repositories -Downloads, documentation, and related papers are available on the -Silver web site at http://melt.cs.umn.edu/silver +Software downloads, documentation, and related papers are available on the +Melt group web site at http://melt.cs.umn.edu/. Information about Copper and sample language frameworks developed with Silver can be found on the MELT Group web site at @@ -52,6 +51,9 @@ https://github.com/melt-umn/silver. Archival versions of this software are permanently available on the Data Repository of the University of Minnesota at https://doi.org/10.13020/D6QX07. +Other software and artifacts are also archived there and can be +reached from this persistent link: http://hdl.handle.net/11299/206558. + ## Acknowledgements We are very grateful to the National Science Foundation, the McKnight From 206876a4456f32c3a10fc2a7d3608b19349a3b37 Mon Sep 17 00:00:00 2001 From: Lucas Kramer Date: Mon, 20 Apr 2020 14:03:21 -0500 Subject: [PATCH 4/4] Fix email in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 90a922b6c..3092c06be 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ initial clone. ## Authors and contributors Silver is currently developed and maintained by -* Lucas Kramer (krame505@cs.umn.edu) +* Lucas Kramer (krame505@umn.edu) * Eric Van Wyk (evw@cs.umn.edu) Past contributors include Ted Kaminski (tedinski@cs.umn.edu), Derek Bodin, Lijesh Krishnan, and Jimin Gao.