This repository contains course notes, example languages, and sample homework assignments for an upper-level CS Programming Languages course using PLCC -- a Programming Languages Compiler Compiler.
Set 1a of the course notes serves as a reference manual for PLCC. It describes the format of a language 'grammar' file that PLCC translates into Java classes to implement a scanner, parser, and interpreter for the language.
In particular, JNotes/ and JNotes-src/ are organized as follows:
| Slide Set | Contents |
|---|---|
| 0 | Syntax and semantics; Tokens |
| 1 | Induction, recursion, and scope |
| 1a | PLCC (reference manual) |
| 2 | Specifying data; Environments |
| 3 | Expression-based languages |
| 3a | Parameter passing and mutation |
| 4 | Typed languages |
| 5 | Object-oriented languages |
| 6 | Infix expressions and arrays |
| 7 | Logic languages |
| 8 | Continuations, parallelism, exception handling, and concurrency |
The ABC language (see the Code directory) is an implementation of ABCDatalog (see http://abcdatalog.seas.harvard.edu/), a Prolog-like language that implements first-order logic. The implementation uses the ABCDatalog logic engine.