Deadline: Mar 6 Wed
|LRM element||Measure of quality||Points|
|Content||The syntax and semantics of all language components are clearly presented and explained with code samples. Provides not just a tutorial of language usage, but is detailed enough that someone else could implement the language just based on the specifications outlined in the manual.||50%|
|Consistency||No inconsistencies concerning the meaning of language components throughout the document.||25%|
|Organization||Document is clearly organized into logical sections; code and prose are clearly and consistently distinguished with different fonts or typefaces.||25%|
Q: How is the LRM different from a language tutorial?
A: Whereas a language tutorial is intended to aid potential users of your language, the LRM should be written for potential implementers of it. In particular, the LRM should attempt to define your language’s behavior as formally and unambiguously as possible, as opposed to showing what idiomatic code looks like.
Q: Does the content of the LRM submission dictate what the language must look like for the rest of the semester?
A: Not at all! One of the reasons to write the LRM so early is that in trying to formally specify your language, it is more than likely that you will discover some inconsistencies and have to revisit some design choices. You will also invariably make more changes to the language while implementing it. At this stage of the project, the LRM should constitute a best-effort document. Keeping the LRM consistent with your language as you implement features is a very good idea, as you will need to submit a revised LRM consistent with the final version of your language at the end of the semester.
The C LRM, found in the C book is excellent. Note that it is in Appendix A (page 192). The main body of the book is NOT what your LRM should look like. That is a language tutorial, not a reference manual.
The assignment and reference implementation are designed and implemented by Lauren Bree Arnett and Ryan Matthew Bernstein, TAs for COMS W4115 Programming Languages and Translators, Spring 2019, Columbia University.