Skip to content

Commit

Permalink
Merge pull request #361 from melt-umn/develop
Browse files Browse the repository at this point in the history
Silver 0.4.2 release candidate 2
  • Loading branch information
krame505 authored Apr 21, 2020
2 parents 7d887cf + bc3a752 commit 267ed8e
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 48 deletions.
83 changes: 35 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,82 +1,69 @@
# 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,
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.

* Ted Kaminski (tedinski@cs.umn.edu)
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

* Lucas Kramer (krame505@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 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).

## 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
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:

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
Archival versions of this software are permanently available on the Data
Repository of the University of Minnesota at https://doi.org/10.13020/D6QX07.

* Ted Kaminski (tedinski@cs.umn.edu)
* Lucas Kramer (krame505@cs.umn.edu)
* Eric Van Wyk (evw@cs.umn.edu)
Other software and artifacts are also archived there and can be
reached from this persistent link: http://hdl.handle.net/11299/206558.

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/.

48 changes: 48 additions & 0 deletions grammars/silver/rewrite/Strategy.sv
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -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
{
Expand Down

0 comments on commit 267ed8e

Please sign in to comment.