Let's be practical. Users know Roff when they see it: a backslash-laden markup language punctuated by directives that begin with a full-stop or apostrophe at the very beginning of a line, often with terse, cryptic-looking names. This description fits AT&T, GNU, and Heirloom's input syntaxes equally well, and these distinctive qualities are immediately recognisable even to readers with minimal exposure to the Troff system. On the other hand, users aren't going to discriminate between implementations when reading a document's source code. Nobody opens an +verbatim+.ms-verbatim- file and thinks "Is this language GNU Roff or Heirloom Roff"? Hell, with the amount of overlap between modern implementations, it won't always be possible to distinguish which flavour of Troff a document was written for (particularly in macro packages). Ergo, readers will understand what _"the roff language"_ refers to, but how they interpret _"roff languages"_ depends largely on their awareness of other Troff implementations, and/or whether their exposure to Troff extends beyond cargo-culted man(7) pages. > I've never seen a BNF-style grammar for it Because *BNF grammars are ill-equipped to describe languages that can modify the rules of their own syntax at runtime. [https://tex.stackexchange.com/a/4205 TeX] is the better-known example of such a language, but this applies to Roff as well. > C programmers speak even to each other in terms of "C99", "C11", "K&R C" Yes, but nobody considers C99 a different language to C11, or C89, right? Rather, they're acknowledged to be different revisions of a standard that build on the one that preceded it.