Lecture 2: Mini Language Interpreter
Background Material
Reading
- Chapter 5 (sec. 1-5) of the text (Basic Semantics)
- Chapter 7 (sec. 1-3) of the text (Control I - Expressions and Statements)
- Sections 13.1-2 of the text (Operational Semantics)
Theme
This lecture builds an interpreter for the mini language from chapter 13 of the text. A parser is written that translates the input program into a data structure that can easily be interpreted. The language is extended to support procedures.
Topics
- Mini language from chapter 13
- Operational semantics for mini language
- Syntax
- < program > &rarr < stmt-list>
- < stmt-list> &rarr < stmt > ; < stmt-list > | < stmt >
- < stmt > &rarr < assign-stmt > | < if-stmt > |
< while-stmt >
- < assign-stmt > &rarr < identifier > := < expr >
- < if-stmt > &rarr if < expr > then < stmt-list > else
< stmt-list > fi
- < while-stmt > &rarr while < expr > do < stmt-list > od
- < expr > &rarr < expr > + < term >
| < expr > - < term > | < term >
- < term > &rarr < term > * < factor > | < factor >
- < factor > &rarr ( < expr > ) | < number >
| < identifier >
- < number > &rarr < number > < digit > | < digit >
- < digit > &rarr 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
- < identifier > &rarr < identifier > < letter >
| < letter >
- < letter > &rarr a | b | c | ... | z
- Semantics
- Env: Identifier &rarr Integer Union {undef}
- (Env and {I = n})(J) = n if J=I, Env(J) otherwise
- Env_0 = undef for all I
- for if-stmt, if expr evaluates to value greater than 0, then evaluate
stmt-list after then, else evaluate stmt-list after else
- for while-stmt, as long as expr evaluates to a value greater than 0,
stmt-list is repeatedly executed and expr evaluated.
- Example
- n := 0 - 5;
- if n then i := n else i := 0 - n fi;
- fact := 1;
- while i do fact := fact * i; i := i - 1 od
- Lecture 2a - Mini Language Interpreter Part I:
parser and expression trees
- Lecture 2b - Mini Language Interpreter Part II:
adding statements
- Lecture 2c - Mini Language Interpreter Part III:
adding procedures
References, programs, and lecture notes
Exercises
Created: April 3, 2008 by jjohnson AT cs DOT drexel DOT edu