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.