Get ahead with a $300 test prep scholarship
| Enter to win by Tuesday 9/24
CS 375 Compilers Novak Vocabulary MIDTERM
Terms in this set (119)
the numeric address of a location in memory.
cf. relative address.
abstract syntax tree (AST)
a tree representation of a program
that is abstracted from the details of a particular programming
language and its surface syntax.
a state of a finite automaton in which the input string is accepted
as being a member of the language recognized by the automaton.
see storage alignment.
a set of symbols used in the definition of a language.
a case where more than one interpretation is possible.
a grammar that allows some sentence or string to be generated
or parsed in more than one way (i.e., with distinct parse trees).
the number of arguments of a function.
a specification of the order in which operations should be performed
when two operators of the same precedence are adjacent. Most operators
are left-associative, e.g. the expression A - B - C
should be interpreted as ((A - B) - C).
abstract syntax tree.
augmented transition network (ATN)
a formalism for describing parsers, especially for natural language.
Similar to a finite automaton, but augmented in that arbitrary tests may be
attached to transition arcs, subgrammars may be called recursively, and
structure-building actions may be executed as an arc is traversed.
the address of the beginning of a data area. This address is added to
a relative address or offset to compute an absolute address.
a data type that is implemented in computer hardware
instructions, such as integer or real.
Backus-Naur Form, a syntax for writing context-free grammars
that describe computer languages.
a parsing method in which input words are matched against the right-hand
sides of grammar productions in an attempt to build a parse tree from the
bottom towards the top.
a situation, e.g. in compiling a program, where one error causes many
reported errors. For example, failure to declare a variable may cause
an error every time that variable is referenced.
to coerce a given value to be of a specified type.
the hierarchy of formal language types: regular, context free, context
sensitive, and recursively enumerable languages, each of which is a proper
subset of the following class.
the phase of a compiler in which executable output code is generated
from intermediate code.
in a hash table, a case in which a symbol has the same
hash function value as another symbol.
a program that translates a source language into an
object language that is executable on a computer.
a program that produces a compiler for a language from a specification
of the syntax and semantics of the language, e.g. yacc.
making a sequence that consists of the elements of a first sequence
followed by those of a second sequence.
a grammar in which the left-hand side of each production consists of a
single nonterminal symbol.
a contiguous area of memory, specified by its base address and size.
Data within the area are referenced by the base address of the area and
the offset, or relative address, of the data within the area.
a statement in a programming language that provides
information to the compiler, such as the structure of a data record,
but does not specify executable code.
a list of steps that shows how a sentence
in a language is derived from a grammar by application of grammar rules.
deterministic finite automaton
a finite automaton that has at most one transition from a state for each
input symbol and no empty transitions. Abbreviated DFA.
deterministic finite automaton.
rules that allow an ambiguous situation to be resolved to a single
outcome, e.g. rules of operator precedence.
a convention in a language, such as Lisp, that a variable can be referenced
by any procedure that is executed after it has become bound and before
it becomes unbound; thus, the scope of the variable can depend on the
to generate all of the members of a set.
a scalar type consisting of a finite set of
enumerated values, e.g. type boolean = (false, true);.
grammars that denote the same language.
a grammar production, as in a Yacc grammar,
that is executed if no other production matches the input.
finite automaton recognizable.
a component part of a data record.
an abstract computer consisting of an alphabet of symbols, a finite
set of states, a starting state, a subset of accepting states, and
transition rules that specify transitions from one state to another
depending on the input symbol. The machine begins in the starting
state; for each input symbol, it makes a transition as specifies by the
transition rules. If the automaton is in an accepting state at the end
of the input, the input is recognized. Also, finite state machine.
finite automaton recognizable
a language that is regular. Abbreviated FAR.
finite state machine
see finite automaton.
a formal specification of a language, consisting of a set of nonterminal
symbols, a set of terminal symbols or words, and production rules that specify
transformations of strings containing nonterminals into other strings.
a deterministic function that converts converts a
symbol or other input to a ``randomized'' integer value.
a table that associates key values with data by use of
a hash function.
a symbol that is used as the name of a variable, type,
constant, procedure, etc.
an expression written with an operator between its operand,
e.g. a + b . cf. prefix, postfix.
an internal language used as the representation of a program during
compilation, such as trees or quadruples. The source language is
translated to intermediate language, then to the object language.
zero or more occurrences of a grammar item;
indicated by a superscript *.
language denoted by a grammar
L(G), the set of strings that can
be derived from a grammar, beginning with the start symbol.
an operator in an arithmetic expression such that if there are two adjacent
occurrences of the operator, the left one should be done first.
a method of modifying a grammar to eliminate left recursion.
in top-down parsing, a grammar rule whose right-hand side begins with the
nonterminal symbol on the left-hand side will cause an infinite recursion,
called left recursion. Also, describes such a production.
a derivation in which the leftmost nonterminal of the string is replaced
at each step.
a basic symbol in a language; e.g., a variable name would be a lexeme for
a grammar of a programming language.
parsing and conversion to internal form of the simplest elements of a
language, usually specified by a regular grammar, such as variable
names, numbers, etc.
a program that performs lexical analysis and outputs the internal form
a convention in a block-structured programming language that a variable
can only be referenced within the block in which it is defined and
blocks contained within that block; thus, the scope of a variable is
completely determined at compile time. cf. dynamic scoping.
a case in which a language construct might be parsed
in more than one way; the correct parsing is determined by examining the
wider context of the construct. Example: 3.14 vs. 3..14
nondeterministic finite automaton
a finite automaton that has multiple state transitions from a single state
for a given input symbol, or that has a null transition, not requiring an
input symbol. Abbreviated NFA.
a symbol that names a phrase in a grammar.
the output language of a compiler.
the location of data relative to the start of a data area.
a data value upon which an operation is performed.
a symbol that denotes an operation to be performed on data in an expression.
transformation of a program to produce a program whose input-output
behavior is equivalent to that of the original program, but that has lower cost,
e.g. faster execution time.
the assignment of multiple meanings to an operator, depending on the type
of data to which it is applied; e.g., the symbol + could represent
integer addition, floating-point addition, or matrix addition.
insertion of an area of unused storage in order to achieve storage alignment.
a program that determines how a given statement in a language could be
derived from the grammar of the language, producing a parse tree or other
information about the statement as output.
a data structure that shows how a statement in a language is derived from
the context-free grammar of the language; it may be annotated with additional
information, e.g. for compilation purposes.
the process of reading a source language, determining its structure,
and producing intermediate code for it.
a phase of a compiler or assembler in which the entire source program
(in its original form or some later representation) is processed.
phase of compiler
a major section of the compilation process, generally involving examination
of the entire program, e.g., syntax analysis, optimization, or code
a way of writing expressions in which an operator appears
after its operands: ab+.
an order of visiting trees, in which the children of a node are examined
first, in left-to-right order, followed by examination of the node itself.
an ordering of operators that specifies that certain operators should
be performed before others when no ordering is otherwise specified.
a specification of the relative precedence of a set of operators,
i.e., that one operator is less, equal, or greater in precedence
a form of parsing in which the grammar rule to be used for later input
is predicted, e.g., on the basis of a keyword that begins a statement.
1. a contiguous set of symbols at the beginning of a
string. 2. a way of writing expressions in which an operator appears
before its operands: +ab.
an order of visiting trees, in which a node is examined first, followed
by recursive examination of its children, in left-to-right order, in
the same fashion.
a rule of a context-free grammar, specifying that a nonterminal symbol
can be replaced by another string of symbols.
a program or abstract device that can read a string of symbols and decide
whether the string is a member of a particular language.
a data area consisting of contiguous component fields,
which may be of different types.
a method of writing a parser in which a grammar rule is written as a
procedure that recognizes that phrase, calling subroutines as needed for
sub-phrases and producing a parse tree or other data structure as output.
in a grammar for a shift-reduce parser,
a case in which an input might be reduced by more than one production.
in shift-reduce parsing, the reduction of items at the top of the stack
to a phrase that encompasses those items.
an algebraic expression that denotes a regular language.
a grammar that denotes a regular language; its productions can only have
on the right-hand side either a terminal string or a terminal string
followed by a single nonterminal.
a language described by a regular grammar, or recognizable by a finite
automaton, e.g. a simple item such as a variable name or a number in a
an address specified by an offset relative to some other address.
a word in a programming language that is reserved for
use as part of the language and may not be used as an identifier.
an operator in an arithmetic expression such that if there are two adjacent
occurrences of the operator, the right one should be done first.
a derivation in which the rightmost nonterminal in the string is replaced
at each step. Also, canonical derivation.
a data type that occupies a fixed amount of storage.
the meaning of a statement in a language. cf. syntax.
in a grammar for a shift-reduce parser,
a case in which an input might either be shifted onto the stack or reduced.
a parser that operates by alternately shifting input elements onto the
top of a stack or reducing a group of elements from the top of the stack to
a larger element representing a phrase.
the initial, or ``sentence'' nonterminal symbol S of a grammar.
refers to things that can be determined or performed
prior to execution of a program, e.g., at compile time.
analysis of a program by examining it, but without running it.
data whose address in memory is constant during execution of a program
static type checking
checking or determination of the types of variables in a language at
compile time. This eliminates the need for dynamic type checking, but
requires that a variable have only a single type.
1. the requirement of some CPU's that certain data have addresses
that fall at even memory word boundaries, so that the data will be
contained in whole memory words.
2. in a compiler or assembler, the adjustment of memory addresses
so that data will be properly aligned.
the assignment of memory locations to data
and program code.
a sequence of symbols or characters.
a contiguous subsequence of a sequence, e.g. 1..10
is a subrange of integer.
a sequence of symbols that matches a contiguous subsequence of another string.
a sequence of symbols at the end of a string.
a data structure that associates a name (symbol) with
information about the named object.
the rules by which legitimate statements can be constructed.
1.the analysis of the form of a statement, such as a programming
language statement or command, to determine its component parts; parsing.
2. the syntax analysis phase of a compiler.
syntax directed translation
in parsing a programming language, building the translation of a statement
or construct in a mechanical way from the translations of its syntactic
a method of translating statements, e.g. in a programming language,
such that the translation of a phrase is built up from the translations
of its components.
a symbol in a phrase structure grammar that is a part of the language
described by the grammar, such as a word or character of the language.
cf. nonterminal symbol.
a word, name, or sequence of characters having a meaning as a unit
in a language.
a predictive form of parsing, such as recursive descent, in which the
parse tree of a statement is constructed starting at the root (sentence
a description of a kind of variables, including a set of
possible values and a set of operations.
the automatic conversion of data from its existing type into the type
required for an operation.
an operator that makes a type from other types,
e.g. array or record.
an element of computer memory that can hold a value.