In logic, mathematics and computer science, a metasyntactic variable (also metalinguistic variable) (pronounced /ˌmɛtəsɪnˈtæktɪk ˈvɛəriəbl/) is a symbol or set of symbols in a metalanguage which stands for a symbol or set of symbols in some object language. For instance, in the sentence:
- Let A and B be two arbitrary formulas of a formal language
.
The symbols A and B are not symbols of the object language
, they are metasyntactic variables in the metalanguage (in this case, English) which is talking about the object language
.
In computer science, programmers use metasyntactic variables to describe a placeholder name or an alias term commonly used to denote the subject matter under discussion or an arbitrary member of a class of things under discussion. The use of a metasyntactic variable is helpful in freeing a programmer from creating a logically named variable. The word foo is the principal example.[1]
In Terry Pratchett's book Men at Arms, the dog Gaspode says, "Clothing has never been what you might call a thingy of dog wossname.", and then adds, "Two metasyntactic variables there. Sorry.".
Any symbol or word can be used as a metasyntactic variable, but "nonsense words" are commonly used. The same concept is employed in other fields where it is expressed by terms such as schematic variable (see logical form).
Etymology
- 'Meta' means providing information about, or transcending.
- 'Syntax' means the grammatical arrangement of words or the grammatical rules of a programming language.
- 'Variable' means something that can assume a value, or something likely to vary.
So we have a word that
- transcends grammar and can assume a value
or one that
- is more comprehensive than grammatical arrangement and is likely to vary.
Mathematical analogy
A metasyntactic variable is a word that is a variable for other words, just as in algebra letters are used as variables for numbers.[1]
Words commonly used as metasyntactic variables
A "standard list of metasyntactic variables used in syntax examples" is: foo, bar, baz, qux, quux, corge, grault, garply, waldo, fred, plugh, xyzzy, thud.[1] The word foo occurs in over 330 RFCs and bar occurs in over 290.[2]
Foo is used in one section of a tutorial on the C programming language by Brian W. Kernighan. Here, he illustrates the use of the extern declaration:[3]
Second, at the beginning of any file
that contains functions needing a variable whose definition is in some other file,
put in an extern declaration, outside of any function:
extern int foo;
f1( ) { ... }
etc.
In Python
Spam, ham, and eggs are the principal[citation needed] metasyntactic variables used in the Python programming language.[4] This is a reference to the famous comedy sketch, Spam, by Monty Python, the namesake of the language.[5] In this extract from the Python tutorial showing the use of comments,[6] SPAM and STRING are metasyntactic variables.
Some examples:
# this is the first comment
SPAM = 1 # and this is the second comment
# ... and now a third!
STRING = "# This is not a comment."
Wibble, wobble, wubble and flob are often used in the UK[7].
References
See also
External links