Skip to content

melt-umn/copper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b5d3414 · Dec 4, 2023
Apr 6, 2021
Jul 29, 2020
Dec 4, 2023
Jul 15, 2021
Apr 6, 2021
Nov 18, 2018
Jul 21, 2019
May 15, 2023
Nov 18, 2018
Nov 19, 2018
Apr 6, 2021

Repository files navigation

Description

Copper is a Java-based integrated scanner and parser generator developed by the Minnesota Extensible Language Tools (MELT) research group at the University of Minnesota with assistance from the National Science Foundation, IBM, the McKnight Foundation, and Adventium Labs. It serves as the parsing back-end of Silver, another MELT tool.

Copper employs the LALR(1) parsing algorithm in conjunction with a modified scanning algorithm, context-aware scanning, which uses parsing context to resolve lexical ambiguities. This allows for more declarative parser specifications, especially of embedded and extensible languages.

It also provides an analysis for use with extensible languages. The pass/fail analysis is applied independently to each language extension, and any combination of passing extensions is guaranteed to compile without parse-table conflicts. This lets any end-user pick and choose extensions in the same manner as libraries.

Downloads and documentation

This site offers the following downloads:

  • JARs for Copper versions 0.6.0 and greater (see CHANGELOG.md for detailed Copper version information).
  • Copper's source code, including example parser specifications
  • A user manual (in online and PDF formats) intended for those who use Copper directly.
  • Javadoc for the APIs of Copper's parser compiler and parsers, intended primarily for developers who wish to use Copper as a back-end.

MELT's Copper website contains:

Papers