A metasyntactic variable is a specific word or set of words identified as a
placeholder
Placeholder may refer to:
Language
* Placeholder name, a term or terms referring to something or somebody whose name is not known or, in that particular context, is not significant or relevant.
* Filler text, text generated to fill space or provi ...
in
computer science and specifically
computer programming. These words are commonly found in
source code and are intended to be modified or substituted before real-world usage. The words foo and bar are good examples as they are used in over 330
Internet Engineering Task Force Requests for Comments, the documents which define foundational internet technologies like
HTTP (web),
TCP/IP, and
email protocol
Protocol may refer to:
Sociology and politics
* Protocol (politics), a formal agreement between nation states
* Protocol (diplomacy), the etiquette of diplomacy and affairs of state
* Etiquette, a code of personal behavior
Science and technology
...
s.
By mathematical
analogy
Analogy (from Greek ''analogia'', "proportion", from ''ana-'' "upon, according to" lso "against", "anew"+ ''logos'' "ratio" lso "word, speech, reckoning" is a cognitive process of transferring information or meaning from a particular subject ( ...
, a
metasyntactic variable is a word that is a
variable
Variable may refer to:
* Variable (computer science), a symbolic name associated with a value and whose associated value may be changed
* Variable (mathematics), a symbol that represents a quantity in a mathematical expression, as used in many ...
for other words, just as in
algebra letters are used as variables for
numbers.
Metasyntactic variables are used to name entities such as variables, functions, and commands whose exact identity is unimportant and serve only to demonstrate a concept, which is useful for teaching programming.
Common metasyntactic variables
Due to English being the foundation-language, or
lingua franca
A lingua franca (; ; for plurals see ), also known as a bridge language, common language, trade language, auxiliary language, vehicular language, or link language, is a language systematically used to make communication possible between groups ...
, of most computer programming languages, these variables are commonly seen even in programs and examples of programs written for other spoken-language audiences.
The typical names may depend however on the subculture that has developed around a given
programming language.
General usage
Metasyntactic variables used commonly across all programming languages include ''
foobar
The terms foobar (), foo, bar, baz, and others are used as metasyntactic variables and placeholder names in computer programming or computer-related documentation. - Etymology of "Foo" They have been used to name entities such as variables, fu ...
'', ''foo'', ''bar'', ''baz'', ', ', ', ', ', ', ', ', ''
'', ', and ''thud''; several of these words are references to the game ''
Colossal Cave Adventure''.
A complete reference can be found in a
MIT Press book titled ''
The Hacker's Dictionary
The Jargon File is a glossary and usage dictionary of slang used by computer programmers. The original Jargon File was a collection of terms from technical cultures such as the MIT AI Lab, the Stanford AI Lab (SAIL) and others of the old ARPANET ...
''.
Japanese
In Japanese, the words (ほげ) and ''fuga'' (ふが) are commonly used, with other common words and variants being piyo (ぴよ), (ほげら), and (ほげほげ).
[ メタ構文変数 ] The origin of as a metasyntactic variable is not known, but it is believed to date to the early 1980s.
French
In France, the word ''toto'' is widely used, with variants ''tata'', ''titi'', ''tutu'' as related placeholders. One commonly-raised source for the use of ''toto'' is a reference to the stock character used to tell jokes with
Tête à Toto.
Usage examples
C
In the following example the function name ''foo'' and the variable name ''bar'' are both metasyntactic variables. Lines beginning with // are comments.
// The function named foo
int foo(void)
C++
Function prototypes with examples of different
argument passing mechanisms:
void Foo(Fruit bar);
void Foo(Fruit* bar);
void Foo(const Fruit& bar);
Example showing the
function overloading capabilities of the C++ language
void Foo(int bar);
void Foo(int bar, int baz);
void Foo(int bar, int baz, int qux);
Python
Spam
Spam may refer to:
* Spam (food), a canned pork meat product
* Spamming, unsolicited or undesired electronic messages
** Email spam, unsolicited, undesired, or illegal email messages
** Messaging spam, spam targeting users of instant messaging ( ...
,
ham, and
eggs are the principal metasyntactic variables used in the
Python programming language. This is a reference to the famous comedy sketch, "
Spam
Spam may refer to:
* Spam (food), a canned pork meat product
* Spamming, unsolicited or undesired electronic messages
** Email spam, unsolicited, undesired, or illegal email messages
** Messaging spam, spam targeting users of instant messaging ( ...
", by
Monty Python
Monty Python (also collectively known as the Pythons) were a British comedy troupe who created the sketch comedy television show '' Monty Python's Flying Circus'', which first aired on the BBC in 1969. Forty-five episodes were made over four ...
, the eponym of the language.
In the following example spam, ham, and eggs are metasyntactic variables and lines beginning with # are comments.
# Define a function named spam
def spam():
# Define the variable ham
ham = "Hello World!"
# Define the variable eggs
eggs = 1
return
IETF Requests for Comments
Both the
IETF RFC
RFC may refer to:
Computing
* Request for Comments, a memorandum on Internet standards
* Request for change, change management
* Remote Function Call, in SAP computer systems
* Rhye's and Fall of Civilization, a modification for Sid Meier's Civ ...
s and
computer programming languages are rendered in
plain text, making it necessary to distinguish metasyntactic variables by a naming convention, since it would not be obvious from context.
Here is an example from the official
IETF document explaining the
e-mail protocols (from RFC 772 - cited in RFC 3092):
All is well; now the recipients can be specified.
S: MRCP TO:
R: 200 OK
S: MRCP TO:
R: 553 No such user here
S: MRCP TO:
R: 200 OK
S: MRCP TO:<@Y,@X,fubar@Z>
R: 200 OK
Note that the failure of "Raboof" has no effect on the storage of
mail for "Foo", "bar" or the mail to be forwarded to "fubar@Z"
through host "X".
(The documentation for texinfo emphasizes the distinction between metavariables and mere variables used in a programming language being documented in some texinfo file as: "Use the @var command to indicate metasyntactic variables. A metasyntactic variable is something that stands for another piece of text. For example, you should use a metasyntactic variable in the documentation of a function to describe the arguments that are passed to that function. Do not use @var for the names of particular variables in programming languages. These are specific names from a program, so @code is correct for them.")
Another point reflected in the above example is the convention that a metavariable is to be uniformly substituted with the same instance in all its appearances in a given schema. This is in contrast with nonterminal symbols in formal grammars where the nonterminals on the right of a production can be substituted by different instances.
Example data
SQL
It is common to use the name ACME
Acme is Ancient Greek (ακμή; English transliteration: ''akmē'') for "the peak", "zenith" or "prime". It may refer to:
Arts and entertainment
* ''Acme'' (album), an album by the Jon Spencer Blues Explosion
* Acme and Septimius, a fictional ...
in example SQL Databases and as placeholder company-name for the purpose of teaching. The term 'ACME Database' is commonly used to mean a training or example-only set of database data used solely for training or testing.
ACME is also commonly used in documentation which shows SQL usage examples, a common practice with in many educational texts as well as technical documentation from companies such as Microsoft and Oracle
An oracle is a person or agency considered to provide wise and insightful counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. As such, it is a form of divination.
Description
The word '' ...
.
See also
*Metavariable (logic)
In logic, a metavariable (also metalinguistic variable or syntactical variable) is a symbol or symbol string which belongs to a metalanguage and stands for elements of some object language. For instance, in the sentence
:''Let A and B be two sente ...
* xyzzy
* Alice and Bob
* John Doe
* Fnord
* Free variables and bound variables
*Gadget
A gadget is a mechanical device or any ingenious article. Gadgets are sometimes referred to as '' gizmos''.
History
The etymology of the word is disputed. The word first appears as reference to an 18th-century tool in glassmaking that was develo ...
*'' Lorem ipsum''
* Nonce word
* Placeholder name
* Widget
* Smurf
References
{{Reflist
External links
Definition of ''metasyntactic variable'', with examples.
used in ''Commonwealth
A commonwealth is a traditional English term for a political community founded for the common good. Historically, it has been synonymous with "republic". The noun "commonwealth", meaning "public welfare, general good or advantage", dates from the ...
Hackish'', such as ''wombat''.
Variable "foo" and Other Programming Oddities
Placeholder names
Metalogic
Variable (computer science)
Syntax (logic)