COMS W4115 Programming Languages and Translators

Spring 2019

Language Reference Manual Rubric

Deadline: Mar 6 Wed

Language Reference Manual Grading Rubric

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%

Frequently Asked Questions

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.

Sample LRMs

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

  • Rusty

  • Futhark

Acknowledgment

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.