1

Lexical Analysis and
Lexical Analyzer Generators
Chapter 3
COP5621 Compiler Construction
Copyright Robert van Engelen, Florida State University, 2007-2009
2
The Reason Why Lexical
Analysis is a Separate Phase
· SimpliIies the design oI the compiler
LL(1) or LR(1) parsing with 1 token lookahead would
not be possible (multiple characters/tokens to match)
· Provides eIIicient implementation
Systematic techniques to implement lexical analyzers
by hand or automatically Irom speciIications
Stream buIIering methods to scan input
· Improves portability
Non-standard symbols and alternate character
encodings can be normalized (e.g. trigraphs)
3
Interaction oI the Lexical
Analyzer with the Parser
Lexical
Analyzer
Parser
Source
Program
Token,
tokenval
Symbol Table
Get next
token
error error

Attributes oI Tokens
Lexical analyzer
·id, 'y ·,88ign, ·num, 31 ·+, ·num, 28 ·`, ·id, 'x
y := 31 + 28*x
Parser
token
tokenval
(token attribute)
5
Tokens, Patterns, and Lexemes
· A token is a classiIication oI lexical units
For example: id and num
· exemes are the speciIic character strings that
make up a token
For example: abc and 123
· !,tterns are rules describing the set oI lexemes
belonging to a token
For example: 'letter followed bv letters ,nd digits` and
'non-emptv sequence of digits
6
SpeciIication oI Patterns Ior
Tokens: Definitions
· An ,lph,bet % is a Iinite set oI symbols
(characters)
· A string s is a Iinite sequence oI symbols
Irom %
s denotes the length oI string s
1 denotes the empty string, thus 1 ÷ 0
· A l,ngu,ge is a speciIic set oI strings over
some Iixed alphabet %
7
SpeciIication oI Patterns Ior
Tokens: String Oper,tions
· The conc,ten,tion oI two strings x and v is
denoted by xv
· The exponent,tion oI a string s is deIined
by
s
0
÷ 1
s
i
÷ s
i-1
s Ior i 0
note that s1 ÷ 1s ÷ s
8
SpeciIication oI Patterns Ior
Tokens: ,ngu,ge Oper,tions
· Union
M ÷ ¦s s Z or s Z M<
· Conc,ten,tion
M÷ ¦xv x Z and v Z M<
· Exponenti,tion

0
÷ ¦1<
i
÷
i-1

· leene closure

*
÷
i÷0,.,C

i
· !ositive closure

¹
÷
i÷1,.,C

i
9
SpeciIication oI Patterns Ior
Tokens: Regul,r Expressions
· Basis symbols:
1 is a regular expression denoting language ¦1<
, Z % is a regular expression denoting ¦,<
· II r and s are regular expressions denoting
languages (r) and M(s) respectively, then
rs is a regular expression denoting (r) M(s)
rs is a regular expression denoting (r)M(s)
r
*
is a regular expression denoting (r)
*
(r) is a regular expression denoting (r)
· A language deIined by a regular expression is
called a regul,r set
10
SpeciIication oI Patterns Ior
Tokens: Regul,r Definitions
· Regular deIinitions introduce a naming
convention:
d
1
Fr
1
d
2
Fr
2
.
d
n
Fr
n
where each r
i
is a regular expression over
% ¦d
1
, d
2
, ., d
i-1
<
· Any d
i
in r
i
can be textually substituted in r
i
to
obtain an equivalent set oI deIinitions
11
SpeciIication oI Patterns Ior
Tokens: Regul,r Definitions
· Example:
letter F.ab.
digit F1.
id Fletter ( letterdigit )
*
· Regular deIinitions are not recursive:
digit8 Fdigit digit8digit wrong'
12
SpeciIication oI Patterns Ior
Tokens: Not,tion,l Shorth,nd
· The Iollowing shorthands are oIten used:
r
¹
÷ rr
*
r? ÷ r1
a-| ÷ abc.
· Examples:
digit F-|
numFdigit
¹
( digit
¹
)? ( E (+)? digit
¹
)?
13
Regular DeIinitions and
Grammars
stmt Fif expr then stmt
if expr then stmt el8e stmt
1
expr Fterm relop term
term
term Fid
num
if F1
then Fthen
el8e Felse
relop F = = =
id Fletter ( letter digit )
*
num Fdigit
¹
( digit
¹
)? ( E (+)? digit
¹
)?
Grammar
Regular deIinitions
1
Coding Regular DeIinitions in
Tr,nsition Di,gr,ms
0 2 1
6
3

5
7
8
return(relop, LE)
return(relop, E)
return(relop, LT)
return(relop, EQ)
return(relop, E)
return(relop, T)
start
=

=

=
other
other
*
*
9
start letter
10 11
*
other
letter or digit
return(gettoken(),
inst,llid())
relop F===
id Fletter ( letterdigit )
*
15
Coding Regular DeIinitions in
Transition Diagrams: Code
token nexttoken()
{ whle (1) {
swtch (state) {
case : c = nextchar();
1 (c==blank || c==tab || c==newlne) {
state = ;
lexeme_begnnng++;
}
else 1 (c==`) state = 1;
else 1 (c==`=) state = 5;
else 1 (c==`) state = 6;
else state = 1al();
break;
case 1:
.
case : c = nextchar();
1 (sletter(c)) state = 1;
else state = 1al();
break;
case 1: c = nextchar();
1 (sletter(c)) state = 1;
else 1 (sdgt(c)) state = 1;
else state = 11;
break;
.
nt 1al()
{ 1orward = token_begnnng;
swth (start) {
case : start = ; break;
case : start = 12; break;
case 12: start = 2; break;
case 2: start = 25; break;
case 25: recover(); break;
de1ault: /* error */
}
return start;
}
Decides the
next start state
to check
16
The Lex and Flex Scanner
Generators
· ex and its newer cousin flex are scanner
generators
· Systematically translate regular deIinitions
into C source code Ior eIIicient scanning
· Generated code is easy to integrate in C
applications
17
Creating a Lexical Analyzer with
Lex and Flex
lex or Ilex
compiler
lex
source
program
lex.l
lex.yy.c
input
stream
C
compiler
a.out
sequence
oI tokens
lex.yy.c
a.out
18
Lex SpeciIication
· A lex specific,tion consists oI three parts:
regul,r definitions. C decl,r,tions in { }

tr,nsl,tion rules

user-defined ,uxili,rv procedures
· The tr,nsl,tion rules are oI the Iorm:
p
1
¦ ,ction
1
<
p
2
¦ ,ction
2
<
.
p
n
¦ ,ction
n
<
19
Regular Expressions in Lex
x match the character x
\. match the character .
°stringmatch contents oI string oI characters
. match any character except newline
^ match beginning oI a line
$ match the end oI a line
[xy( match one character x, y, or (use \ to escape -)
[^xy(match any character except x, y, and
[a-( match one oI a to
r* closure (match zero or more occurrences)
r+ positive closure (match one or more occurrences)
r optional (match zero or one occurrence)
r
1
r
2
match r
1
then r
2
(concatenation)
r
1
|r
2
match r
1
or r
2
(union)
( r ) grouping
r
1
\r
2
match r
1
when Iollowed by r
2
{d} match the regular expression deIined by d
20
Example Lex SpeciIication 1
{
#nclude stdo.h
}

[-(+ { prnt1(°s\n yytext); }
.|\n { }

man()
{ yylex();
}
Contains
the matching
lexeme
Invokes
the lexical
analyzer
lex spec.l
gcc lex.yy.c -ll
./a.out spec.l
Translation
rules
21
Example Lex SpeciIication 2
{
#nclude stdo.h
nt ch = wd = nl = ;
}
delm [ \t(+

\n { ch++; wd++; nl++; }
^{delm} { ch+=yyleng; }
{delm} { ch+=yyleng; wd++; }
. { ch++; }

man()
{ yylex();
prnt1("8d8d8d\n" nl wd ch);
}
Regular
deIinition
Translation
rules
22
Example Lex SpeciIication 3
{
#nclude stdo.h
}
dgt [-(
letter [-a-(
d {letter}({letter}|{dgt})*

{dgt}+ { prnt1(°number: s\n yytext); }
{d} { prnt1(°dent: s\n yytext); }
. { prnt1(°other: s\n yytext); }

man()
{ yylex();
}
Regular
deIinitions
Translation
rules
23
Example Lex SpeciIication
{ /* de1ntons o1 man1est constants */
#de1ne LT (256)
.
}
delm [ \t\n(
ws {delm}+
letter [-a-(
dgt [-(
d {letter}({letter}|{dgt})*
number {dgt}+(\.{dgt}+)(E[+\-({dgt}+)

{ws} { }
1 {return IF;}
then {return THE;}
else {return ELSE;}
{d} {yylval = nstall_d(); return ID;}
{number} {yylval = nstall_num(); return &ER;}
°° {yylval = LT; return RELOP;}
°=° {yylval = LE; return RELOP;}
°=° {yylval = EQ; return RELOP;}
°° {yylval = E; return RELOP;}
°° {yylval = T; return RELOP;}
°=° {yylval = E; return RELOP;}

nt nstall_d()
.
Return
token to
parser
Token
attribute
Install yytext as
identiIier in symbol table
2
Design oI a Lexical Analyzer
Generator
· Translate regular expressions to NFA
· Translate NFA to an eIIicient DFA
regular
expressions
NFA DFA
Simulate NFA
to recognize
tokens
Simulate DFA
to recognize
tokens
Option,l
25
Nondeterministic Finite
Automata
· An NFA is a 5-tuple (S, %, 0, s
0
, F) where
S is a Iinite set oI st,tes
% is a Iinite set oI symbols, the ,lph,bet
0 is a m,pping Irom S L % to a set oI states
s
0
Z S is the st,rt st,te
F S is the set oI ,ccepting (or fin,l) st,tes
26
Transition Graph
· An NFA can be diagrammatically
represented by a labeled directed graph
called a tr,nsition gr,ph
0
start a
1 3 2
b b
a
b
S ÷ ¦0,1,2,3<
% ÷ ¦a,b<
s
0
÷ 0
F ÷ ¦3<
27
Transition Table
· The mapping 0 oI an NFA can be
represented in a tr,nsition t,ble
St,te
Input
a
Input
b
0 ¦0, 1< ¦0<
1 ¦2<
2 ¦3<
0(0,a) ÷ ¦0,1<
0(0,b) ÷ ¦0<
0(1,b) ÷ ¦2<
0(2,b) ÷ ¦3<
28
The Language DeIined by an
NFA
· An NFA ,ccepts an input string x iI and only iI
there is some path with edges labeled with
symbols Irom x in sequence Irom the start state to
some accepting state in the transition graph
· A state transition Irom one state to another on the
path is called a move
· The l,ngu,ge defined bv an NFA is the set oI
input strings it accepts, such as (ab)*abb Ior the
example NFA
29
Design oI a Lexical Analyzer
Generator: RE to NFA to DFA
s
0
N(p
1
)
N(p
2
)
start
1
1
N(p
n
)
1
.
p
1
¦ ,ction
1
<
p
2
¦ ,ction
2
<
.
p
n
¦ ,ction
n
<
,ction
1
,ction
2
,ction
n
Lex speciIication with
regular expressions
NFA
DFA
Subset construction
30
N(r
2
) N(r
1
)
From Regular Expression to NFA
(Thompson`s Construction)
f i
1
f
a
i
f i
N(r
1
)
N(r
2
)
start
start
start
1
1 1
1
f i
start
N(r) f i
start
1
1
1
a
r
1
r
2
r
1
r
2
r* 1 1
31
Combining the NFAs oI a Set oI
Regular Expressions
2
a
1
start
6
a
3
start
5
b b
8
b
7
start
a b
a ¦ ,ction
1
<
abb ¦ ,ction
2
<
a*b¹ ¦ ,ction
3
<
2
a
1
6
a
3 5
b b
8
b
7
a b
0
start
1
1
1
32
Simulating the Combined NFA
Example 1
2
a
1
6
a
3 5
b b
8
b
7
a b
0
start
1
1
1
0
1
3
7
2

7
7 8
Must Iind the longest m,tch:
Continue until no Iurther moves are possible
When last state is accepting: execute action
,ction
1
,ction
2
,ction
3
a b a a
none
,ction
3
33
Simulating the Combined NFA
Example 2
2
a
1
6
a
3 5
b b
8
b
7
a b
0
start
1
1
1
0
1
3
7
2

7
5
8
6
8
When two or more accepting states are reached, the
Iirst action given in the Lex speciIication is executed
,ction
1
,ction
2
,ction
3
a b b a
none
,ction
2
,ction
3
3
Deterministic Finite Automata
· A deterministic finite ,utom,ton is a special case
oI an NFA
No state has an 1-transition
For each state s and input symbol , there is at most one
edge labeled , leaving s
· Each entry in the transition table is a single state
At most one path exists to accept a string
Simulation algorithm is simple
35
Example DFA
0
start
a
1 3 2
b b
b
b
a
a
a
A DFA that accepts (ab)*abb
36
Conversion oI an NFA into a
DFA
· The subset construction ,lgorithm converts an
NFA into a DFA using:
1-closure(s) ÷ ¦s< ¦t s F
1
. F
1
t<
1-closure(T) ÷
sZT
1-closure(s)
move(T,,) ÷ ¦t s F
,
t and s Z T<
· The algorithm produces:
Dst,tes is the set oI states oI the new DFA
consisting oI sets oI states oI the NFA
Dtr,n is the transition table oI the new DFA
37
1-closure and move Examples
2
a
1
6
a
3 5
b b
8
b
7
a b
0
start
1
1
1
1-closure(¦0<) ÷ ¦0,1,3,7<
move(¦0,1,3,7<,a) ÷ ¦2,,7<
1-closure(¦2,,7<) ÷ ¦2,,7<
move(¦2,,7<,a) ÷ ¦7<
1-closure(¦7<) ÷ ¦7<
move(¦7<,b) ÷ ¦8<
1-closure(¦8<) ÷ ¦8<
move(¦8<,a) ÷ X
0
1
3
7
2

7
7 8
a b a a
none
Also used to simulate NFAs
38
Simulating an NFA using
1-closure and move
S :÷ 1-closure(¦s
0
<)
S
prev
:÷ X
, :÷ nextch,r()
hile S Xdo
S
prev
:÷ S
S :÷ 1-closure(move(S.,))
, :÷ nextch,r()
end do
if S
prev
Y F Xthen
execute ,ction in S
prev
return 'yes
el8e return 'no
39
The Subset Construction
Algorithm
Initially, 1-closure(s
0
) is the only state in Dst,tes and it is unmarked
hile there is an unmarked state T in Dst,tes do
mark T
for each input symbol , Z % do
U :÷ 1-closure(move(T.,))
if U is not in Dst,tes then
add U as an unmarked state to Dst,tes
end if
Dtr,nT,,| :÷ U
end do
end do
0
Subset Construction Example 1
0
start
a
1 10
2
b
b
a
b
3
5
6 7 8 9
1
1
1
1
1
1
1
1
A
start
B
C
D E
b
b
b
b
b
a
a
a
a
Dst,tes
A ÷ ¦0,1,2,,7<
B ÷ ¦1,2,3,,6,7,8<
C ÷ ¦1,2,,5,6,7<
D ÷ ¦1,2,,5,6,7,9<
E ÷ ¦1,2,,5,6,7,10<
a
1
Subset Construction Example 2
2
a
1
6
a
3 5
b b
8
b
7
a b
0
start
1
1
1
,
1
,
2
,
3
Dst,tes
A ÷ ¦0,1,3,7<
B ÷ ¦2,,7<
C ÷ ¦8<
D ÷ ¦7<
E ÷ ¦5,8<
F ÷ ¦6,8<
A
start
a
D
b
b
b
a
b
b
B
C
E F
a
b
,
1
,
3
,
3
,
2
,
3
2
Minimizing the Number oI States
oI a DFA
A
start
B
C
D E
b
b
b
b
b
a
a
a
a
a
A
start
B D E
b b
a
a
b
a
a
3
From Regular Expression to DFA
Directly
· The 'import,nt st,tes` oI an NFA are those
without an 1-transition, that is iI
move(¦s<,,) X Ior some , then s is an
important state
· The subset construction algorithm uses only
the important states when it determines
1-closure(move(T.,))

From Regular Expression to DFA
Directly (Algorithm)
· Augment the regular expression r with a
special end symbol # to make accepting
states important: the new expression is r#
· Construct a syntax tree Ior r#
· Traverse the tree to construct Iunctions
null,ble, firstpos, l,stpos, and followpos
5
From Regular Expression to DFA
Directly: Syntax Tree oI (ab)*abb#
`
[
1
a
2
b
3
a

b
5
b
#
6
conc,ten,tion
closure
,ltern,tion
position
number
(for le,fs 1)
6
From Regular Expression to DFA
Directly: Annotating the Tree
· null,ble(n): the subtree at node n generates
languages including the empty string
· firstpos(n): set oI positions that can match the Iirst
symbol oI a string generated by the subtree at
node n
· l,stpos(n): the set oI positions that can match the
last symbol oI a string generated be the subtree at
node n
· followpos(i): the set oI positions that can Iollow
position i in the tree
7
From Regular Expression to DFA
Directly: Annotating the Tree
Node n null,ble(n) firstpos(n) l,stpos(n)
LeaI 1 true X X
LeaI i Ialse ¦i< ¦i<
|

c
1
c
2
null,ble(c
1
)
or
null,ble(c
2
)
firstpos(c
1
)

firstpos(c
2
)
l,stpos(c
1
)

l,stpos(c
2
)
W

c
1
c
2
null,ble(c
1
)
and
null,ble(c
2
)
if null,ble(c
1
) then
firstpos(c
1
)
firstpos(c
2
)
el8e firstpos(c
1
)
if null,ble(c
2
) then
l,stpos(c
1
)
l,stpos(c
2
)
el8e l,stpos(c
2
)
`

c
1
true firstpos(c
1
) l,stpos(c
1
)
8
From Regular Expression to DFA
Directly: Syntax Tree oI (ab)*abb#
¦6< ¦1, 2, 3<
¦5< ¦1, 2, 3<
¦< ¦1, 2, 3<
¦3< ¦1, 2, 3<
¦1, 2< ¦1, 2<
`
¦1, 2< ¦1, 2<
[
¦1< ¦1<
a
¦2< ¦2<
b
¦3< ¦3<
a
¦< ¦<
b
¦5< ¦5<
b
¦6< ¦6<
#
null,ble
firstpos l,stpos
1 2
3

5
6
9
From Regular Expression to DFA
Directly: followpos
for each node n in the tree do
if n is a cat-node with leIt child c
1
and right child c
2
then
for each i in l,stpos(c
1
) do
followpos(i) :÷ followpos(i) firstpos(c
2
)
end do
el8e if n is a star-node
for each i in l,stpos(n) do
followpos(i) :÷ followpos(i) firstpos(n)
end do
end if
end do
50
From Regular Expression to DFA
Directly: Algorithm
s
0
:÷ firstpos(root) where root is the root oI the syntax tree
Dst,tes :÷ ¦s
0
< and is unmarked
hile there is an unmarked state T in Dst,tes do
mark T
for each input symbol , Z % do
let U be the set oI positions that are in followpos(p)
Ior some position p in T,
such that the symbol at position p is ,
if U is not empty and not in Dst,tes then
add U as an unmarked state to Dst,tes
end if
Dtr,nT.,| :÷ U
end do
end do
51
From Regular Expression to DFA
Directly: Example
1,2,3
start a 1,2,
3,
1,2,
3,6
1,2,
3,5
b b
b b
a
a
a
Node followpos
1 ¦1, 2, 3<
2 ¦1, 2, 3<
3 ¦<
¦5<
5 ¦6<
6 -
1
2
3 5 6
52
Time-Space TradeoIIs
Autom,ton
Sp,ce
(worst c,se)
Time
(worst c,se)
NFA O(r) O(rLx)
DFA O(2
r
) O(x)



%0#0,8430., 3,888,$05,7,90!,80
W $2510890/0834190.42507 
 47#  5,7839940344,0,/4:/ 349-05488-0 2:950.,7,.9078

94038942,9.

W !74;/08011.0392502039,943
$8902,9.90.36:089425020390.,,3,078 -,3/47,:942,9.,1742850.1.,9438 $970,2-:110732094/8948.,335:9

W 2574;085479,-9 
43
89,3/,7/82-48,3/,9073,90.,7,.907 03.4/38.,3-03472,0/ 0  977,58

 

3907,.94341900., 3,07990!,7807
$4:7.0 !747,2 0., 3,07 %403 9403;, !,7807 09309 9403 07747

07747

$2-4%,-0

 

997-:90841%4038 
  0.,,3,07 

/   ,883 3:2  3:2  /    9403 9403;, 9403,997-:90 !,7807

9403 470.707:08/08...:398 470.990738 .250.9403 470.7.250/ . .3/3:2 W 00208 ..990738 .907897389.041/98 .3//98 ..3/00208 W 9403 8.7-3908094100208 -043394.881. %4038 !..1.-.9 2.250 099071440/-099078.7090850.3/ W !.0:5.3/ 343 0259806:03.943410...

1390806:03.1..1.04182-48 1742% 8 /034908900394189738 1 /0349089002598973 9:81  W . $50.7.07 842010/.990738147 %40380139438 W 3.-09 % 8..13908094182-48 ..5.0 8.-09% .5.9078 W 89738 8.850.94341!.80941897384.3:.

.89738 8/0130/ - 8 1 8 8 8 147  34909.43. $50..943 41.3/ 8 /03490/- W %00543039.9438 W %0.94341!.903.943 419489738 .990738147 %4038$973 507.1.981 18 8 .

3:..903.9438 W &343    8  8 Z  478 Z < W 43.3/ Z < W 543039.1.0.943  1<   W 0030.48:70   C  W !489. $50.990738147 %4038.48:70   C  ..943     Z  .94341!.0 507.

.705708843/03493 7  8 7 8.7809 .3:.70:.3:.1.3/8 ..0/.70:.94341!. Z % 8.70:.9.70:.8882-48 1 8.705708843/03493 7 W .70:.70:.7057088438/03493 .705708843/03493.70:.0 903 78 8.7057088438 .705708843/03493 7 7 8.3/ 8 70850.0/0130/-.01< .757088438 W . $50.7070:.08 7 .705708843/03493 7   8 78 8.< W 17 .990738147 %4038#0:.705708843/03493.70:.3:.

.70:.94341!..8:-899:90/37 94 4-9.0..03943 /  F 7 /  F 7 / 3 F 73 0700.7057088434..3-0909:.7 8. $50.3.3.7/01394383974/:.1.23 .306:.03980941/0139438 .990738147 %4038#0:.70139438 W #0:.43.07 %  / /  /  < W 3/ 37 .

:78.-  /9 F   / F 09907 09907/9 W #0:.7034970.70139438 W .1.94341!.. $50.250 09907F  .7/0139438.990738147 %4038#0:.0 /98F /9/98/9 743 .

 $50.94341!. (.2508 /9 F  ( 3:2 F /9 /9    /9  .$479.  W .943.-.7041903:80/ 7 77 771 .3/ W %014438479.990738147 %403849.1.3/8..

78 7.22.22.7/0139438 9072F / 1 F 1  3:2 903 F 903 080 F 080 7045 F            / F 09907 09907 /9 3:2 F /9 /9    /9  .70139438.3/ 7.7 8929 F 1 057 903 8929  1057 903 8929 080 8929 1 057F 90727045 9072  9072 #0:. #0:.

 4/3#0:.79 0990747 /9 09907   4907  709:73 099403 389.28 7045 F  89.701394383 %7.79     4907    709:73 7045  709:73 7045  709:73 7045 %     709:73 7045 "    709:73 7045  709:73 7045 % 4907 / F 09907 09907/9 89.*/ .38943.7.

  89..80  ..80 89. .4. 89.901.  0. 147.90 080 89.07 -70.7  1 809907 . . ...7  1 .80  .701394383 %7.309. 89.80  89.80 .38943. /01.90 080 1 .9. 39 1./0890 30989.3030  89.-.79-70..79 -70..90 080 1 .  -70.90  080 1 8/9 .7.79-70.0..79  . .3.284/0 94033099403 0   89.80 89.90  080 89.90 -70.309.90  .. 89.:9.901.90  080 89.7  1 809907 .-.90 94.309. 89.4/3#0:. ..  -70.  89.. .7989.80 ..79-70.90  0020*-0333  < 080 1 .80 70.80 89.7/9403*-0333 89 89.  89..

07747 .

79 < . < 709:73 89.

.8943907.3/983007.90/.9438 .3307 0307.4/0147011.9478 W 0 .0. %00..4:8310 ..708.9.0398.333 W 0307.4/080.38.903 .9070:.97.55.3/0$..3307 0307.9478 W $8902.7/0139438 39484:7..

2 . 4:9 35:9 8970.2 0  0  .42507 0  .42507  . 4:9 806:03.0 5747. 04710 . 70..3.079 0.0. .3/0 0 84:7.93.0 4194038 .

943 .0/:708 W %097.4388984197005.943 W 0850..9433 < ...9437:08 .:.38..38.943 < 5 53 ..798 70:. 0$50.94383<  97.7574.1.7.7041901472 5 .7/0139438 /0.1..943 < .9437:08  :807 /0130/.

3.9..90.7 9037 .9.9078  2.7..7 031440/-7 /< 2. 2..9.903...9.9070:.:7703.9.907  47 :80 9408.943 77 2.907  2..9.907 8973 2.:7703.7.3/ .90..430..08 7 5489..074474304.9070.9.7 477 :343 7  74:53 77 2.059  .. #0:.0.30 ( 2.9.48:70 2. ( 2.30 )  2.50  )(2.0 77 2.9.9.. 94 7 .4304724704.7.48:70 2..3.9070.9..7.0593030 2.:7703..08 7 45943..9.43.75708843830  2.43041.7.9..9.9.9003/41..439039841897341.9.0744724704...7.-033341..705708843/0130/-/ .

1.:/089/4  <   ( 57391 83 3<  2.3..  . .943 7:08  3.3 0020 909 < 3.07 0850.2500$50.0  ..  .3 0  < 439.38.943 %7. .9.38 902..408 900.

.  . 4:9850.

:/089/4  39.1.  < #0:. <  2. 03< /02<.943 7:08  3. / 3 < )/02<.3 0  57391 ///3 3 / .2500$50.7 /013943 . / 3  < /029(  3. .38. 03/ < ..943 %7.

943 %7.1.:/089/4  #0:. ( /09907< 09907</9<  /9< 57391 3:2-0783 909 < /<57391 /03983 909 < 57391 490783 909 <  2..38.943 7:08  3.3 0  < .7 < /0139438 /9 ( 09907 . .2500$50.

1. .943 .2500$50..

4389.31089. /0139438412.398 .

. ( /9 ( /09907< 09907</9< 3:2-07/9<  /9<    (/9<   8<< 1709:73< 903709:73%< 080709:73$< /<.389.%709:73# !<  .7807 %403 .%709:73# !<  ..389.709:73# !<  .-0 .8 /039107382-49."709:73# !<  .*/ 709:73< 3:2-07<.*/ #09:73 940394 5.709:73# !<  39389..*3:2 709:73&#<  ... /0130%  < /0293( 8/02< 09907 ..709:73# !<  .909 .997-:90 389...

38.90 9470.3011.705708843894 W %7.430 94038 .7 057088438  $2:.430 94038  $2:..3. 70:.0.07 0307.9094.947 W %7.9070:. 08341.38.90 9470.039 5943.

7989. 9:50 $ % 0 8  070 $ 8.13908094189. 89. 43/09072389.13908094182-48 90.9.908 % 8.90  $ 89080941.-09 0 8..8094189.5.908 8 Z $ 89089. W 38.2.553 1742$L % 94.390 :942.908 .0593 47 13..

.9.3-0/.0/.389437.97.  -  -  $   < % .79 - .5 .-00//70..5 . 89. -< 8  < .90/7. %7. 7057080390/-..7..5 W 3.22.389437.

-0 0 0 0 0 $9..97.3. -  <  < < < .-0 W %02. %7.5530 41.  < 35:9  < < < .389439.38943%.90   35:9 .3-0 7057080390/3.

990/08...059389...9094 8420.38943174243089.-..24.00130/-.98.017429089.3  W 3. %0.349074390 5.389080941 35:9897389.-00/9 82-481742 3806:03.9039097.3:.250 .3/431 9070884205.5 W 89.0598 .0 W %0..3:.389437..0/0130/- .8 .0/.0598 8:..9094..7989.335:98973 1.14790 0.9097..

.943  .943 .0.1.3.9433 < 89.947#9494 0850..79   5  5  53 8 1 1 1 .43897:.943 < .9439 70:.07 0307...9433 $:-809.943 ....943 < ..7057088438 5 5 53 . 08341.

79 1   7 1 89. 89.943 1 .79  1  7  7  7 1 77 77 7 89.79  1 . 1 89. 742#0:.7570884394 %425843 843897:.79 1  1 1 1 89.79  1 7 1 1 1 .

.     -  .943 < .$0941 #0:.. . - . 42-3390841.-.757088438 89. .79 1 1 1  .943 < .79  .79  -   .79  .    89..943 < 89.  - 89.  - ..

943 ..250  89... $2:.79 ..9.705488-0 03.8989. . .  .943  .943 3430 . 4393:0:39341:790724. .908...:90.059300.   -  .939042-30/ .943 - 1 1 1  .  ..08.943         :8913/90430892.

:90/ .0/ 90 1789..033900850.059389..943           0394472470..939042-30/ .943800.   -  . $2:.943 3430 ..1.943.. ..943  .908.943 .79 .. .943 - 1 1 1  ..  ...250  89.7070.  .

. 90708.-08.38943 470.-00/.83089.90 924894305.943 8..9089894.850.390:942.3/35:982-4..943...31 97.9.389439.8.8973 $2:.. W /09072389.3 489.039739097.059.80 41.479288250 .1390..89..:942.908 .92489430 0/0. 0. 09072389.90.38 W .

.. ...  .-- 89. .0598 . .250 9.79 .9. -   .

:83 1 .48:70 8 8< 9  8F1 F1 9< 1 .4792574/:.  W %08:-809.389439.48:70 % 8Z%1 .48:70 8 24.-0419030 .908 8908094189.9084190 97.0 % .43897:. 9  8F. 43.08 89.0784341.9 .3 394.3 89097.4792 .943.3394.4388934180984189.3/8Z %< W %0.0798.43.908419030 .

0 .  .2508  89. < 1 . - 1 .48:70  <    < 24.< 1 .0   < .         3430 84:80/9482:.48:70   <   < 24.79 .0    < .48:70 .   < 1 .908 .     .48:70 < < 24. .3/24.48:70 < < 24. X . 1 .  - 1 1 1  .0 < .0 < .

93.48:70 8 < $570.9433$570. 309.7 0 $ X /4 $570. X .3/24.0 $ . Y  X 903 00.:90. $2:..48:70 24.. .. 709:73 08 080 709:73 34 .7 03//4 1$570. 309.48:70 .3:83 1 . $ $ 1 .0 $ 1 .

90% 389.908 03/1 97.//& .70/89.(& 03//4 03//4 .0 % .3:32.909489..70/89.908 903 .7% 147 0.8.943 4792 39.70/ 0 90708.908 .35:982-4. 1 & 8349389.3/98:32. 1 .3:32.90389.Z % /4 & 1 .48:70 24.3% . %0$:-80943897:.48:70 8 8904389.908 /4 2.

943.$:-80943897:. .250 1  89.  89.79 .  -  -   1 1  89. .908     <       <      <       <        < . . -    .79 .   1  1  1 1  - 1  .

 - .  .  -  -  .  -  . . 89.250  89. - 1 1 1  .908    <   < < <  <  < .943.   . -  .  89.79 . . .$:-80943897:.79 . .   -  .

908 41. . . . 89.79 .      . -    . . -  89. .79 . . 32390:2-0741$9.

38943 9.3 25479.7570884394 70.3. 9038 8.48:70 24.908039/09072308 1 .90 W %08:-809.943.  X 1478420.31 97.908 41.709480 94:9. 742#0:.4792:80843 9025479.9 W %0 25479.43897:.3989.0 % .3989.981 24.  .0 8< .3989.

7057088437 9..0593 89.0..7570884394 70.89548 .3/144548 .9.3990300570884387 W 43897:.-0 1789548 .91:3... 742#0:. 850.97001477 W %7.839.90825479.078090970094.03/82-4942.43897:.9438 3:.9 4792 W :20399070:.

.9073.903...181 .943   .943   . 742#0:. .43.%70041 .9$39.48:70   .   548943 3:2-07 1470.7570884394 70.-- .

083.:/39002598973 W 1789548 3 8094154894389.3:.8982-441.90/-908:-9700. 742#0:.9.32.-0 3 908:-9700.93349.89548 3 908094154894389.9.90 .7570884394 70.32.908 .89730307.90/-0908:-9700..89730307.9.9 34/03 W 144548  908094154894389..3144 548943 3909700 .9 34/03 W ..9.934/03 0307.901789 82-441.9390%700 W 3:.9.

1  .11 0.9390%700 4/03 0.93349.7570884394 70.742#0:.

 .  . W .

  1789548 .89548 . 13:.-0 .89548 . 080. 903 .89548 3 X < . 3:. 1789548 .89548 .89548 . 13:. 903 1789548 .  .  .-0 . 0801789548 .89548 .80 3:. .  .-0 .-0 3 97:0 1. 97:0 1789548 3 X < 1789548 . .  .  1789548 .-0 . 47 3:.3/ 3:.89548 .  .-0 .-0 . .  . 3:.

89548  < < .<  .%70041 .<  1789548 .9$39.-0   <  <  < < < . <  < .--   <   <   < < < < <  <  3:. 742#0:..<  < .7570884394 70. <    < < ..

.9 34/09019...89.7 34/0 147 0.9144548 147 0.89548 3 /4 144548  144548   1789548 3 03//4 03/1 03//4 .3.7570884394 70. 903 147 0.89548 ..3. /4 144548  144548   1789548 .34/03 3909700/4 13 8. ./..3/79. 03//4 08013 8. 742#0:./.

908 /4 2.908 903 .9.9700 89. Z % /4 09& -0908094154894389. 1& 83490259.3:32.8.703144548 5 14784205489435 3% 8:.95489435 8.3:32.7%  1470.908 03/1 97.9.742#0:.909489.70/89.3/349389.70/ 0 90708.35:982-4.(& 03//4 03//4 .908 8 <.3% .70/89.7570884394 70..94792 8 1789548 7449 0707449 89074494190839.//& .90%389.99082-4.3/8:32.

79 . 742#0:. -   . .250 4/0       144548   <   < < < < 89.7570884394 70.9. -   . -          .

0 4789.80 7 7 %20 4789....0%7../04118 :942. %20 $5.80 7L  .943   $5.

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer: Get 4 months of Scribd and The New York Times for just $1.87 per week!

Master Your Semester with a Special Offer from Scribd & The New York Times