Consider the following BNF

<join-command> ::= <string> + <string>

In this context <join-command> and <string> are normally called metalinguistic variables or syntactic categories. Note that the first usage of <string> don't necessarily represent the same terminal string as the second usage.

Recently however I come across a slightly different notion of "metalinguistic variable" (in a course about formal logic). Here it meant a variable of the metalanguage that represent one string of the object language (i.e. terminal language) and always that. So the previous syntax would become:

<join-command> ::= <string1> + <string2>

What's the correct terminology? Should I avoid calling BNF syntactic categories "metalinguistic variables"?

Maybe calling them "syntactic variables" would fix the ambiguity?


1 Answer 1


Personally, I call them "non-terminals", following Chomsky rather than Backus.

But I'm not going to attempt to argue any sort of universal correctness of that terminology. Definitions in mathematics are purely instrumental, just like variable names in a program (or even metavariable metanomenclature).

You can α-convert a mathematical exposition by consistently replacing a defined phrase with some other phrase not used anywhere in the text, say "colourless green ideas", and every assertion will retain the same truth value. It might be harder to follow, but that's a purely aesthetic consideration.

So here's my aesthetic argument for calling these things "non-terminals" rather than "metalinguistic variables" or "syntactic categories": the term "non-terminal" does not in any way imply that the objects have any useful semantics. A generative grammar does not rely on any particular semantic connotation for the intermediate symbols used in the derivation, and indeeds quite common to write grammars with rather artificial non-terminals which do not serve any need other than that of facilitating a particular parsing algorithm.

I suppose "metalinguistic variable" might also be neutral in that sense, but it seems a bit much to describe a placeholder and "non-terminal" rolls more easily off the tongue.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.