1.7 Implementation Methods 25
implementation and has the advantage of very fast program execution, once
the translation process is complete. Most production implementations of lan-
guages, such as C, COBOL, C++, and Ada, are by compilers.
The language that a compiler translates is called the source language. The
process of compilation and program execution takes place in several phases, the
most important of which are shown in Figure 1.3.
The lexical analyzer gathers the characters of the source program into lexi-
cal units. The lexical units of a program are identifiers, special words, operators,
and punctuation symbols. The lexical analyzer ignores comments in the source
program because the compiler has no use for them.
The syntax analyzer takes the lexical units from the lexical analyzer and uses
them to construct hierarchical structures called parse trees. These parse trees
represent the syntactic structure of the program. In many cases, no actual parse
tree structure is constructed; rather, the information that would be required to
build a tree is generated and used directly. Both lexical units and parse trees are
further discussed in Chapter 3. Lexical analysis and syntax analysis, or parsing,
are discussed in Chapter 4.
Operating
system
command
interpreter
Scheme
interpreter
C
compiler
Virtual
C
computer
Virtual
Ada
computer
Ada
compiler
...
...
Assembler
Virtual
assembly
language
computer
Java Virtual
Machine
Java
compiler
.NET
common
language
run time
VB.NET
compiler
C#
compiler
Virtual
VB .NET
computer
Virtual C#
computer
Bare
machine
Macroinstruction
interpreter
Operating system
Virtual Java
computer
Virtual
Scheme
computer
Figure 1.2
Layered interface of
virtual computers,
provided by a typical
computer system