HTML and CSS Reference
15.1. Languages and Metalanguages
A language is composed of commonly accepted symbols that we as-
semble in a meaningful way in order to express ourselves and to pass
along information that is intelligible to others. For example, English is
a language with rules (grammar) that define how to put its symbols
(words) together to form sentences, paragraphs, and, ultimately, topics
like the one you are holding. If you know the words and understand the
grammar, you can read the topic, even if you don't necessarily under-
stand its contents.
An important difference between human and computer-based languages
is that human languages are self-describing. We use English sentences
and paragraphs to define how to create correct English sentences and
paragraphs. Our brains are marvelous machines that have no problem
understanding that you can use a language to describe itself. However,
computer languages are not so rich and computers are not so bright
that you could easily define a computer language with itself. Instead, we
define one languagea metalanguage that defines the rules and symbols
for other computer languages.
Software developers create the metalanguage rules and then define
one or more languages based on those rules. [*] The metalanguage also
guides developers who create the automated agents that display or oth-
erwise process the contents of documents that use its language(s).
[*] The use of metalanguages has long been popular in the world of computer programming. The
C programming language, for instance, has a set of rules and symbols defined by one of several
metalanguages, including yacc . Developers use yacc to create compilers, which in turn process lan-
guage source files into computer-intelligible programs (hence, its name: Yet Another Compiler Com-
piler). yacc 's only purpose is to help developers create new programming languages.
XML is the metalanguage the W3C created and that developers use to
define markup languages such as XHTML. Browser developers rely on
XML's metalanguage rules to create automated processes that read the
language definition of XHTML and implement the processes that ulti-
mately display or otherwise process XHTML documents.