Consider the following BNF
<join-command> ::= <string> + <string>
In this context
<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?