Sie sind auf Seite 1von 43

System Software Lab

2010
Program to count the number of lines, number of words, number
of blank spaces and number of character in a file
Posted on April 12, 2012 by Dev
%{
#include<stdio.h>
int cc=0,bc=0,wc=0,lc=0;
%}
%%
[^ \t\n]+ { wc++;
cc=cc+yyleng;
}
\n lc++;
" " bc++;
\t bc=bc+5;
%%
main(int argc,char *argv[])
{
if (argc!=2) {
printf("\nusage:./a.out filename\n");
return(0);
Srinivas Institute of Technology Department of MC !age 1
System Software Lab
2010
}
yyin=fopen(argv[1],"r");
yylex();
printf("\n no of lines are %d\n",lc);
printf("\n no of words are %d\n",wc);
printf("\n no of blanks are %d\n",bc);
printf("\n no of character are %d\n",cc);
}
int yywrap(){return 1;}
Sample Input\Output:
[united@localhost ~]$ vi lexpart.l
[united@localhost ~]$ lex lexpart.l
[united@localhost ~]$ gcc lex.yy.c
[united@localhost ~]$ vi file.c
[united@localhost ~]$ ./a.out file.c
no of lines are 3
no of words are 9
no of blans are !
no of character are "#
Srinivas Institute of Technology Department of MC !age 2
System Software Lab
2010
[united@localhost ~]$
[1].
Statement: Program to count the number of vowels and consonants in a given string.
USN: 4sn0mca1!
source:
%{
int vcnt=1,ccnt=0;
%}
%%
[aeiouAEIOU] {vcnt++;}
[a-zA-Z] {ccnt++;}
[.][!]!n "etu"n;
%%
#ain$%
{
&"int'$(Ente" t)e *entence*=+(%;
,,-e.$%;
&"int'$(!n /o o' vo0e-*=%1!n(,vcnt%;
&"int'$(!n /o o' 2on*onant*=%1!n(,ccnt%;
}
"n#ut$%ut#ut:
Ente" t)e *entence*=+ 3a,
/o o' vo0e-*=1
/o o' con*ontant*=4
Srinivas Institute of Technology Department of MC !age "
System Software Lab
2010
[&].
Statement: Program to count the number of characters' words' s#aces and lines in a given in#ut
file.
USN: 4sn0mca1!
source:
%{
int ccnt=0,0cnt=0,*cnt=0,-cnt=0;
%}
%%
[a-zA-z]+ {ccnt+=,,-en5; 0cnt++;}
[!n]+ {-cnt++;}
[ ]+ {*cnt++;}
[.] {ccnt++;}
%%
#ain$%
{
6I7E 8'&;
c)a" 'i-en#[40];
&"int'$(!n Ente" 6i-e na#e=+(%;
*can'$(%*(,'i-en#%;
'&='o&en$'i-en#,("(%;
i'$'&==/U77%
&"int'$(!nE""o" in o&enin5 !!(%;
e-*e
{
,,in='&;
,,-e.$%;
&"int'$(!n /o o' c)a"=%1(,ccnt%;
&"int'$(!n /o o' 0o"1=%1(,0cnt%;
&"int'$(!n /o o' *&ace*=%1(,*cnt%;
&"int'$(!n /o o' -ine*=%1!n(,-cnt%;
}
}
"n#ut$%ut#ut:
Srinivas Institute of Technology Department of MC !age #
System Software Lab
2010
6i-e /a#e9 te*t.t.t Ente" 'i-e na#e=+te*t.t.t
:, na#e i* 3a, /o o' c)a"=+14
/o o' 0o"1=+;
/o o' *&ace*=<
/o o' -ine*=1
[(].Statement: Program to count number of
a) Positive and negative integers
b) Positive and negative fractions
USN: 4sn0mca1!
source:
%{
Int &nc=0,nnc=0,&'c=0,n'c=0;
%}
%%
[+]=[0->]+ {&nc++;}
[-][0->]+ {nnc++;}
[+]=[0->]8[.][0->]+ {&'c++;}
[-][0->]8[.][0->]+ {n'c++;}
%%
#ain$%
{
?"int'$@Ente" /o=+A%;
B,-e.$%;
?"int'$@!n/o o' +ve inte5e"*=%1A,&nc%;
?"int'$@!n/o o' -ve inte5e"*=%1A,nnc%;
?"int'$@!n/o o' +ve '"action*=%1A,&'c%;
?"int'$@!n/o o' -ve '"action=%1A,n'c%;
}
"n#ut$%ut#ut:
Ente" /o=+ 14 <.C> -0.DC 0.<
/o o' +ve inte5e"*=1
/o o' Eve inte5e"*=0
/o o' +ve '"action*=4
/o o' Eve '"action*=1

Srinivas Institute of Technology Department of MC !age $
System Software Lab
2010
[4]. Statement: Program to count the numbers of comment lines in a given * #rogram. +lso
eliminate them and co#, that #rogram into se#arate file.
USN:4sn0-*+1!
Source:
%{
int ccnt=0;
%}
%%
(F8( {c)a" c1=0,c4=in&ut$%;
0)i-e$1%
{
i'$c4==EO6%
G"eaH;
i'$c1==I8I JJ c4==IFI%
{
ccnt++;
G"eaH;
}
e-*e
{
c1=c4;
c4=in&ut$%;
}
}
}
%%
#ain$%
{
6I7E 8'&1,8'&4;
c)a" *"c'i-e[40],1*t'i-e[40];
&"int'$(!nEnte" t)e *ou"ce 'i-e na#e=+(%;
*can'$(%*(,*"c'i-e%;
'&1='o&en$*"c'i-e,("(%;
i'$!'&1%
&"int'$(!n E""o" in o&enin5 !!(%;
Srinivas Institute of Technology Department of MC !age %
System Software Lab
2010
e-*e
{
&"int'$(!n Ent"e t)e 1e*tination 'i-e=+(%;
*can'$(%*(,1*t'i-e%;
'&4='o&en$1*t'i-e,(0(%;
,,in='&1;
,,out='&4;
,,-e.$%;
&"int'$(!n /o o' co##ent -ine %1(,ccnt%;
}
}
"n#ut$out#ut:
Ke*t.t.t
:, na#e i* 3a,
F8 K)i* i* #enGe" o' L2M 8F
Ente" t)e *ou"ce 'i-ena#e=+te*t.t.t
Ente" t)e 1e*tination 'i-e=+1*t'i-e.t.t
/o o' co##ent -ine=1
N*t'i-e.t.t
:, na#e i* 3a,
Srinivas Institute of Technology Department of MC !age &
System Software Lab
2010
[!]. Statement: Program to count the number of .scanf/ and .#rintf/ Statements in a *
#rogram. 0e#lace them with .readf/ and .writef/ Statements res#ectivel,.
USN: 4sn0mca1!
source:
%{
int *cnt=0,&cnt=0;
%}
%%
(*can'( { '&ut*$("ea1'(,,,out%;
*cnt++;}
(&"int'( { '&ut*$(0"ite'(,,,out%;
&cnt++;}
%%
#ain$%
{
6I7E 8'&1,8'&4;
c)a" *"c'i-e[40],1*t'i-e[40];
&"int'$(Ente" *"c'i-e na#e=+(%;
*can'$(%*(,*"c'i-e%;
'&1='o&en$*"c'i-e,("(%;
i'$!'&1%
&"int'$(!n E""o"(%;
e-*e
{
&"int'$(!n Ente" t)e 1e*tination 'i-e=+(%;
*can'$(%*(,1*t'i-e%;
'&4='o&en$1*t'i-e,(0(%;
,,in='&1;
Srinivas Institute of Technology Department of MC !age '
System Software Lab
2010
,,out='&4;
,,-e.$%;
&"int'$(!n /o o' *can Otate#ent=%1(,*cnt%;
&"int'$(!n /o o' &"int' Otate#ent=%1(,&cnt%;
}
}
"n#ut$%ut#ut:
AGc.c
P inc-u1e Qconio.)+
Roi1 #ain$%
{
2)a" c);
?"int'$@Ente" ,ou" na#e=+A%;
Ocan'$@,ou" na#e i* %*A,c)%;
Metc)$%;
}
Ente" *"c'i-e=+aGc.c
Ente" 1e*tination 'i-e=+1*t.t.t
/o o' *can' *t*te#ent=1
/o o' &"int' *t*te#ent=1
N*t.t.t
P inc-u1e Qconio.)+
Roi1 #ain$%
{
2)a" c);
0"ite'$@Ente" ,ou" na#e=+A%;
"ea1'$@,ou" na#e i* %*A,c)%;
Metc)$%;
}
Srinivas Institute of Technology Department of MC !age (
System Software Lab
2010
[1]. Statement: Program to recogni2e a valid arithmetic e3#ression and identif, the identifiers
and o#erators #resent. Print them se#aratel,.
USN: 4sn0mca1!
source:
%{
int S=0,i=0,G=0,o&=0,c=0,i1=0,a=0;
c)a" ct[10];
%}
%%
[a-zA-Z]+[0->a-zA-Z]8 {i1++; &"int'$(%*9 i* an i1enti'e" !n(,,,te.t%;}
[!+!-!8!F!=] {o&++;
ct[i]=,,te.t[0];
i++;
&"int'$(%*9 i* an o&e"ato" !n(,,,te.t%;
}
($( {G++;}
(%( {G--;
i'$GQ0%
{
&"int'$(Inva-i1 e.&"e**ion!!(%;
F8e.it$0%;8F
}
}
Srinivas Institute of Technology Department of MC !age 10
System Software Lab
2010
%%
#ain$%
{
&"int'$(!nEnte" t)e Otate#ent=+(%;
,,-e.$%;
'o"$S=0;SQi;S++%
{
i'$ct[S]==I=I%
a++;
}
i'$a+1%
{
&"int'$(!n Inva-i1 e.&"e**ion(%;
"etu"n 0;
}
e-*e i'$o&+1==i1 JJ G==c%
&"int'$(!n It i* va-i1 e.&"e**ion !n(%;
e-*e
&"int'$(!n It i* inva-i1 e.&"e**ion!n(%;
}
"n#ut$%ut#ut:
Ente" t)e Otate#ent=+ a=G+c
a 9i* an i1enti'ie"
= 9i* an o&e"ato"
G 9i* an i1enti'ie"
+ 9i* an o&e"ato"
2 9i* an i1enti'ie"
It i* va-i1 e.&"e**ion.
Ente" t)e Otate#ent=+ a=G+c=1
a 9i* an i1enti'ie"
= 9i* an o&e"ato"
G 9i* an i1enti'ie"
Srinivas Institute of Technology Department of MC !age 11
System Software Lab
2010
+ 9i* an o&e"ato"
2 9i* an i1enti'ie"
1 9i* an i1enti'ie"
It i* va-i1 e.&"e**ion.
9
[4].Statement: Program to recogni2e and count the number of identifiers in a given in#ut file.
USN: 4sn0mca1!
source:
%{
int i1ent=0;
%}
IN [ Ta-zA-Z][a-zA-Z0->]8
%%
{IN} {&"int'$(%*9(,,,te.t%; i1ent++;}
.8 ;
%%
#ain$%
{
6I7E 8'&1;
c)a" *"c'i-e[40];
&"int'$(!n Ente" t)e *"c'i-e=+(%;
*can'$(%*(,*"c'i-e%;
'&1='o&en$*"c'i-e,("(%;
i'$!'&1%
&"int'$(!nE""o"!!!!!!!!!(%;
Srinivas Institute of Technology Department of MC !age 12
System Software Lab
2010
e-*e
{
,,in='&1;
,,-e.$%;
&"int'$(!n /o o' i1enti'ie"9%1(,i1ent%;
}
}
In&ut-Out&ut9
Ke*t.t.t
AGc
A4v<
-)C
a.-
Ente" t)e *"c'i-e=+ te*t.t.t
AGc9
A4v<9
-)C9
/o o' i1enti'ie"=<
Srinivas Institute of Technology Department of MC !age 1"
System Software Lab
2010
[1].
Program to test the validit, of a sim#le e3#ression involving o#erators 5' $' 6 and 7.
ypg1.l
%{
P inc-u1e (,.taG.)(
%}
%%
[a-zA-Z]+ "etu"n IN;
[0->] "etu"n /U:;
[!t]
[!n] "etu"n 0;
. "etu"n$,,te.t[0]%;
%%
,#g1.,
%{
P inc-u1e(-e..,,.c(
%}
%toHen IN /U:
Srinivas Institute of Technology Department of MC !age 1#
System Software Lab
2010
%%
a**i5n9INI=Ie.&
e.&9e.&I+Ite"#
e.&I-Ite"#
e.&I8Ite"#
e.&IFIte"#
te"#
;
te"#9IN
/U:
I-IIN
I-I/U:
I$Ie.&I%I
;
%%
#ain$%
{
&"int'$(!nEnte" an e.&"e**ion=+(%;
,,&a"*e$%;
&"int'$(!n Ra-i1 E.&"e**ion!!(%;
"etu"n;
}
int ,,e""o"$c)a" 8*%
{
&"int'$(!n Inva-i1 e.&"e**ion !!(%;
e.it$0%;
}
*om#ilation:
7e. ,&51.-
Bacc ,&51.,
2c ,.taG.c E--
.Fa.out
"n#ut$%ut#ut:
Ente" an e.&"e**ion9 c=a+G
Ra-i1 E.&"e**ion!!
Srinivas Institute of Technology Department of MC !age 1$
System Software Lab
2010
Ente" an e.&"e**ion9 c-a-
Inva-i1 E.&"e**ion!!
[&].
Program to recogni2e nested "8 control statements and dis#la, the number of levels of
nesting.
,#g&.l
%{
P inc-u1e(,.taG.)(
%}
7EK [a-zA-Z]+
/U: [0->]+
O?U $[Q+](==((Q=((+=((!=((((JJ(%
%%
(i'( "etu"n I;
(}( "etu"n 2V;
({( "etu"n OV;
[A-Za-z]+ "etu"n OKW;
($(${/U:}{7EK}%${O?U}${/U:}{7EK}%%8(%( "etu"n EX?;
!n "etu"n 0;
Srinivas Institute of Technology Department of MC !age 1%
System Software Lab
2010
. ;
%%
,#g&.,
%{
P inc-u1e(-e..,,.c(
int ne*t=0;
%}
%toHen I OE: 7EK O?U 2V OV EX? OKW
%%
*t#t9 I EX? A {ne*t++;}
A9OKW
OV *t#t 2V
OV OKW 2V
(;(
;
%%
#ain$%
{
&"int'$(!n Ente" a va-i1 i' 2ont"o- Otate#ent=+(%;
,,&a"*e$%;
&"int'$(!n Ra-i1 ne*tin5 1e&t) i* %1(,ne*t%;
"etu"n;
}
int ,,e""o"$c)a" 8*%
{
&"int'$(!n Inva-i1 !!(%;
e.it$0%;
}
*om#ilation:
7e. ,&54.-
Bacc ,&54.,
2c ,.taG.c E--
.Fa.out
"n#ut$out#ut:
Srinivas Institute of Technology Department of MC !age 1&
System Software Lab
2010
Ente" va-i1 i' cont"o- *tate#ent=+ i'$a+=G%{&"intc}
Ra-i1 ne*tin5 1e&t) i* 1
Ente" va-i1 i' cont"o- *tate#ent=+ i'$a+=G%{ i'$G+=c% &"intc}}
Ra-i1 ne*tin5 1e&t) i* 4
[(].
Program to recognize a valid variable, which starts with a letter, followed by any
number of letters or digits.
,#g(.l
%{
P inc-u1e (,.taG.)(
%%
[a-zA-Z] "etu"n 7;
[0->] "etu"n N;
!n "etu"n 0;
%%
Srinivas Institute of Technology Department of MC !age 1'
System Software Lab
2010
,#g(.,
%{
P inc-u1e (-e..,,.c(
%}
%toHen 7 N;
%%
va"97 A
7
;
A97 A
N A
7
N
;
%%
#ain$%
{
&"int'$(!n Ente" t)e va"iaG-e9!n(%;
,,&a"*e$%;
&"int'$(!n Ra-i1 va"iaGe-.(%;
"etu"n;
}
,,e""o"$%
{
&"int'$(!n Inva-i1 Ra"iaG-e!n(%;
e.it$0%;
}
*om#ilation:
7e. ,&5<.-
Bacc ,&5<.,
2c ,.taG.c E--
.Fa.out
"n#ut$out#ut:
Srinivas Institute of Technology Department of MC !age 1(
System Software Lab
2010
Ente" t)e va"iaG-e9
6<0D
Ra-i1 Ra"iaG-e
Ente" t)e va"iaG-e9
<0D
Inva-i1 va"iaG-e
Ente" t)e va"iaG-e9
Ra-i1 va"iaG-e
[4].
Program to evaluate an arithmetic expression involving operators +, -, * and /.
,#g4.l
%{
int ,,-va-;
P inc-u1e (,.taG.)(
%}
%%
[0->]+ {,,-va-=atoi$,,te.t%;
"etu"n NIMIK;}
(+( "etu"n ?7UO;
(-( "etu"n :I/UO;
Srinivas Institute of Technology Department of MC !age 20
System Software Lab
2010
(8( "etu"n :U7;
(F( "etu"n NIR;
($( "etu"n O?E/;
(%( "etu"n 27OOE;
(!n( "etu"n 0;
. ;
%%
,#g4.,
%{
P inc-u1e (-e..,,.c(
%}
%toHen NIMIK
%-e't ?7UO :I/UO
%-e't :U7 NIR
%nona**oc U:I/UO
%-e't O?E/ 27OOE
%%
*t#t9e.&"{ &"int'$(%1(,Y1%;}
;
e.&"9e.&" ?7UO e.&" { YY=Y1+Y<;}
e.&" :I/UO e.&" {YY=Y1-Y<;}
e.&" :U7 e.&" {YY=Y18Y<;}
e.&" NIR e.&"
{i'$Y<==0%
&"int'$(Nivi1e G, 0(%;
e-*e
YY=Y1FY<;}
:I/UO e.&" %&"ec U:I/UO {YY=-Y4;}
O?E/ e.&" 27OOE {YY=Y4;}
NIMIK {YY=Y1;}
;
%%
#ain$%
{
&"int'$(Ente" t)e e.&"e**ion9(%;
,,&a"*e$%;
}
,,e""o"$%
{
&"int'$(Inva-i1 e.&"e**ion!n(%;
Srinivas Institute of Technology Department of MC !age 21
System Software Lab
2010
e.it$0%;
}
*om#ilation:
7e. ,&5;.-
Bacc ,&5;.,
2c ,.taG.c E--
.Fa.out
"n#ut$out#ut:
Ente" t)e e.&"e**ion9 D84
10
Ente" t)e e.&"e**ion9 10F4
D
Ente" t)e e.&"e**ion9 108<0
<00
Ente" t)e e.&"e**ion9 10+4
14
[!].
Program to recognize the grammar a
n
b, n!"#$%.
,#g!.l
%{
P inc-u1e (,.taG.)(
%}
%%
(a( "etu"n A;
(G( "etu"n V;
Srinivas Institute of Technology Department of MC !age 22
System Software Lab
2010
!n "etu"n 0;
. ,,e""o"$%;
%%
,#g!.,
%{
P inc-u1e (-e..,,.c(
%}
%toHen A V
%%
va"9A A A A A A A A A A O
O9A O
V
;
%%
#ain$%
{
&"int'$(Ente" a *t"in59(%;
,,&a"*e$%;
&"int'$(Ra-i1 in&ut(%;
"etu"n;
}
,,e""o"$%
{
&"int'$(/ot a va-i1 in&ut !!(%;
e.it$0%;
}
*om#ilation:
7e. ,&5D.-
Bacc ,&5D.,
2c ,.taG.c E--
.Fa.out
"n#ut$out#ut:
Ente" a *t"in59 aaaaaaaaG
Srinivas Institute of Technology Department of MC !age 2"
System Software Lab
2010
Ra-i1 In&ut
Ente" a *t"in59 aaaaaG
Inva-i1 In&ut
Srinivas Institute of Technology Department of MC !age 2#
System Software Lab
2010
K)e 7e. J Bacc ?a5e
9e3 $ + 9e3ical +nal,2er :enerator
M. E. Lesk and E. Schmidt
+;S<0+*<
7e. )e-&* 0"ite &"o5"a#* 0)o*e cont"o- '-o0 i* 1i"ecte1 G, in*tance* o' "e5u-a" e.&"e**ion* in t)e
in&ut *t"ea#. It i* 0e-- *uite1 'o" e1ito"-*c"i&t t,&e t"an*'o"#ation* an1 'o" *e5#entin5 in&ut in
&"e&a"ation 'o" a &a"*in5 "outine.
7e. *ou"ce i* a taG-e o' "e5u-a" e.&"e**ion* an1 co""e*&on1in5 &"o5"a# '"a5#ent*. K)e taG-e i*
t"an*-ate1 to a &"o5"a# 0)ic) "ea1* an in&ut *t"ea#, co&,in5 it to an out&ut *t"ea# an1 &a"titionin5 t)e
in&ut into *t"in5* 0)ic) #atc) t)e 5iven e.&"e**ion*. A* eac) *uc) *t"in5 i* "eco5nize1 t)e
co""e*&on1in5 &"o5"a# '"a5#ent i* e.ecute1. K)e "eco5nition o' t)e e.&"e**ion* i* &e"'o"#e1 G, a
1ete"#ini*tic 'inite auto#aton 5ene"ate1 G, 7e.. K)e &"o5"a# '"a5#ent* 0"itten G, t)e u*e" a"e
e.ecute1 in t)e o"1e" in 0)ic) t)e co""e*&on1in5 "e5u-a" e.&"e**ion* occu" in t)e in&ut *t"ea#.
K)e -e.ica- ana-,*i* &"o5"a#* 0"itten 0it) 7e. acce&t a#Gi5uou* *&eci'ication* an1 c)oo*e t)e
-on5e*t #atc) &o**iG-e at eac) in&ut &oint. I' nece**a",, *uG*tantia- -ooHa)ea1 i* &e"'o"#e1 on t)e
in&ut, Gut t)e in&ut *t"ea# 0i-- Ge GacHe1 u& to t)e en1 o' t)e cu""ent &a"tition, *o t)at t)e u*e" )a*
5ene"a- '"ee1o# to #ani&u-ate it.
7e. can 5ene"ate ana-,ze"* in eit)e" 2 o" Uat'o", a -an5ua5e 0)ic) can Ge t"an*-ate1 auto#atica--, to
&o"taG-e 6o"t"an. It i* avai-aG-e on t)e ?N?-11 U/IX, Wone,0e-- M2OO, an1 IV: OO *,*te#*. K)i*
#anua-, )o0eve", 0i-- on-, 1i*cu** 5ene"atin5 ana-,ze"* in 2 on t)e U/IX *,*te#, 0)ic) i* t)e on-,
*u&&o"te1 'o"# o' 7e. un1e" U/IX Re"*ion Z. 7e. i* 1e*i5ne1 to *i#&-i', inte"'acin5 0it) Bacc, 'o"
t)o*e 0it) acce** to t)i* co#&i-e"-co#&i-e" *,*te#.
1. "ntroduction.
7e. i* a &"o5"a# 5ene"ato" 1e*i5ne1 'o" -e.ica- &"oce**in5 o' c)a"acte" in&ut *t"ea#*. It acce&t* a
)i5)--eve-, &"oG-e# o"iente1 *&eci'ication 'o" c)a"acte" *t"in5 #atc)in5, an1 &"o1uce* a &"o5"a# in a
5ene"a- &u"&o*e -an5ua5e 0)ic) "eco5nize* "e5u-a" e.&"e**ion*. K)e "e5u-a" e.&"e**ion* a"e *&eci'ie1
G, t)e u*e" in t)e *ou"ce *&eci'ication* 5iven to 7e.. K)e 7e. 0"itten co1e "eco5nize* t)e*e
e.&"e**ion* in an in&ut *t"ea# an1 &a"tition* t)e in&ut *t"ea# into *t"in5* #atc)in5 t)e e.&"e**ion*. At
t)e Goun1a"ie* Get0een *t"in5* &"o5"a# *ection* &"ovi1e1 G, t)e u*e" a"e e.ecute1. K)e 7e. *ou"ce
'i-e a**ociate* t)e "e5u-a" e.&"e**ion* an1 t)e &"o5"a# '"a5#ent*. A* eac) e.&"e**ion a&&ea"* in t)e
in&ut to t)e &"o5"a# 0"itten G, 7e., t)e co""e*&on1in5 '"a5#ent i* e.ecute1.
K)e u*e" *u&&-ie* t)e a11itiona- co1e Ge,on1 e.&"e**ion #atc)in5 nee1e1 to co#&-ete )i* ta*H*,
&o**iG-, inc-u1in5 co1e 0"itten G, ot)e" 5ene"ato"*. K)e &"o5"a# t)at "eco5nize* t)e e.&"e**ion* i*
5ene"ate1 in t)e 5ene"a- &u"&o*e &"o5"a##in5 -an5ua5e e#&-o,e1 'o" t)e u*e"I* &"o5"a# '"a5#ent*.
K)u*, a )i5) -eve- e.&"e**ion -an5ua5e i* &"ovi1e1 to 0"ite t)e *t"in5 e.&"e**ion* to Ge #atc)e1 0)i-e
t)e u*e"I* '"ee1o# to 0"ite action* i* uni#&ai"e1. K)i* avoi1* 'o"cin5 t)e u*e" 0)o 0i*)e* to u*e a
Srinivas Institute of Technology Department of MC !age 2$
System Software Lab
2010
*t"in5 #ani&u-ation -an5ua5e 'o" in&ut ana-,*i* to 0"ite &"oce**in5 &"o5"a#* in t)e *a#e an1 o'ten
ina&&"o&"iate *t"in5 )an1-in5 -an5ua5e.
7e. i* not a co#&-ete -an5ua5e, Gut "at)e" a 5ene"ato" "e&"e*entin5 a ne0 -an5ua5e 'eatu"e 0)ic) can
Ge a11e1 to 1i''e"ent &"o5"a##in5 -an5ua5e*, ca--e1 [[)o*t -an5ua5e*.II 3u*t a* 5ene"a- &u"&o*e
-an5ua5e* can &"o1uce co1e to "un on 1i''e"ent co#&ute" )a"10a"e, 7e. can 0"ite co1e in 1i''e"ent
)o*t -an5ua5e*. K)e )o*t -an5ua5e i* u*e1 'o" t)e out&ut co1e 5ene"ate1 G, 7e. an1 a-*o 'o" t)e
&"o5"a# '"a5#ent* a11e1 G, t)e u*e". 2o#&atiG-e "un-ti#e -iG"a"ie* 'o" t)e 1i''e"ent )o*t -an5ua5e*
a"e a-*o &"ovi1e1. K)i* #aHe* 7e. a1a&taG-e to 1i''e"ent envi"on#ent* an1 1i''e"ent u*e"*. Eac)
a&&-ication #a, Ge 1i"ecte1 to t)e co#Gination o' )a"10a"e an1 )o*t -an5ua5e a&&"o&"iate to t)e ta*H,
t)e u*e"I* GacH5"oun1, an1 t)e &"o&e"tie* o' -oca- i#&-e#entation*. At &"e*ent, t)e on-, *u&&o"te1 )o*t
-an5ua5e i* 2, a-t)ou5) 6o"t"an $in t)e 'o"# o' Uat'o" [4] )a* Geen avai-aG-e in t)e &a*t. 7e. it*e-'
e.i*t* on U/IX, M2OO, an1 OOF<Z0; Gut t)e co1e 5ene"ate1 G, 7e. #a, Ge taHen an,0)e"e t)e
a&&"o&"iate co#&i-e"* e.i*t.
7e. tu"n* t)e u*e"I* e.&"e**ion* an1 action* $ca--e1 *ou"ce in t)i* #e#o% into t)e )o*t 5ene"a--&u"&o*e
-an5ua5e; t)e 5ene"ate1 &"o5"a# i* na#e1 ,,-e.. K)e ,,-e. &"o5"a# 0i-- "eco5nize e.&"e**ion* in a
*t"ea# $ca--e1 in&ut in t)i* #e#o% an1 &e"'o"# t)e *&eci'ie1 action* 'o" eac) e.&"e**ion a* it i*
1etecte1. Oee 6i5u"e 1.
+-------+
Source -> | Lex | -> yylex
+-------+
+-------+
Input -> | yylex | -> Output
+-------+
An overview of Lex
Figure 1
6o" a t"ivia- e.a#&-e, con*i1e" a &"o5"a# to 1e-ete '"o# t)e in&ut a-- G-anH* o" taG* at t)e en1* o' -ine*.
%%
[ \t+! "
i* a-- t)at i* "e\ui"e1. K)e &"o5"a# contain* a %% 1e-i#ite" to #a"H t)e Ge5innin5 o' t)e "u-e*, an1
one "u-e. K)i* "u-e contain* a "e5u-a" e.&"e**ion 0)ic) #atc)e* one o" #o"e in*tance* o' t)e c)a"acte"*
G-anH o" taG $0"itten !t 'o" vi*iGi-it,, in acco"1ance 0it) t)e 2 -an5ua5e convention% Su*t &"io" to t)e
en1 o' a -ine. K)e G"acHet* in1icate t)e c)a"acte" c-a** #a1e o' G-anH an1 taG; t)e + in1icate* [[one o"
#o"e ...II; an1 t)e Y in1icate* [[en1 o' -ine,II a* in ]EN. /o action i* *&eci'ie1, *o t)e &"o5"a#
5ene"ate1 G, 7e. $,,-e.% 0i-- i5no"e t)e*e c)a"acte"*. Eve",t)in5 e-*e 0i-- Ge co&ie1. Ko c)an5e an,
"e#ainin5 *t"in5 o' G-anH* o" taG* to a *in5-e G-anH, a11 anot)e" "u-e9
%%
[ \t+! "
[ \t+ printf#$ $%"
K)e 'inite auto#aton 5ene"ate1 'o" t)i* *ou"ce 0i-- *can 'o" Got) "u-e* at once, oG*e"vin5 at t)e
te"#ination o' t)e *t"in5 o' G-anH* o" taG* 0)et)e" o" not t)e"e i* a ne0-ine c)a"acte", an1 e.ecutin5
t)e 1e*i"e1 "u-e action. K)e 'i"*t "u-e #atc)e* a-- *t"in5* o' G-anH* o" taG* at t)e en1 o' -ine*, an1 t)e
*econ1 "u-e a-- "e#ainin5 *t"in5* o' G-anH* o" taG*.
Srinivas Institute of Technology Department of MC !age 2%
System Software Lab
2010
7e. can Ge u*e1 a-one 'o" *i#&-e t"an*'o"#ation*, o" 'o" ana-,*i* an1 *tati*tic* 5at)e"in5 on a -e.ica-
-eve-. 7e. can a-*o Ge u*e1 0it) a &a"*e" 5ene"ato" to &e"'o"# t)e -e.ica- ana-,*i* &)a*e; it i*
&a"ticu-a"-, ea*, to inte"'ace 7e. an1 Bacc [<]. 7e. &"o5"a#* "eco5nize on-, "e5u-a" e.&"e**ion*; Bacc
0"ite* &a"*e"* t)at acce&t a -a"5e c-a** o' conte.t '"ee 5"a##a"*, Gut "e\ui"e a -o0e" -eve- ana-,ze" to
"eco5nize in&ut toHen*. K)u*, a co#Gination o' 7e. an1 Bacc i* o'ten a&&"o&"iate. L)en u*e1 a* a
&"e&"oce**o" 'o" a -ate" &a"*e" 5ene"ato", 7e. i* u*e1 to &a"tition t)e in&ut *t"ea#, an1 t)e &a"*e"
5ene"ato" a**i5n* *t"uctu"e to t)e "e*u-tin5 &iece*. K)e '-o0 o' cont"o- in *uc) a ca*e $0)ic) #i5)t Ge
t)e 'i"*t )a-' o' a co#&i-e", 'o" e.a#&-e% i* *)o0n in 6i5u"e 4. A11itiona- &"o5"a#*, 0"itten G, ot)e"
5ene"ato"* o" G, )an1, can Ge a11e1 ea*i-, to &"o5"a#* 0"itten G, 7e..
lexic&l gr&''&r
rule( rule(
| |
v v
+---------+ +---------+
| Lex | | )&cc |
+---------+ +---------+
| |
v v
+---------+ +---------+
Input -> | yylex | -> | yyp&r(e | -> *&r(e+ input
+---------+ +---------+
Lex wit, )&cc
Figure -
Bacc u*e"* 0i-- "ea-ize t)at t)e na#e ,,-e. i* 0)at Bacc e.&ect* it* -e.ica- ana-,ze" to Ge na#e1, *o
t)at t)e u*e o' t)i* na#e G, 7e. *i#&-i'ie* inte"'acin5.
7e. 5ene"ate* a 1ete"#ini*tic 'inite auto#aton '"o# t)e "e5u-a" e.&"e**ion* in t)e *ou"ce [;]. K)e
auto#aton i* inte"&"ete1, "at)e" t)an co#&i-e1, in o"1e" to *ave *&ace. K)e "e*u-t i* *ti-- a 'a*t ana-,ze".
In &a"ticu-a", t)e ti#e taHen G, a 7e. &"o5"a# to "eco5nize an1 &a"tition an in&ut *t"ea# i*
&"o&o"tiona- to t)e -en5t) o' t)e in&ut. K)e nu#Ge" o' 7e. "u-e* o" t)e co#&-e.it, o' t)e "u-e* i* not
i#&o"tant in 1ete"#inin5 *&ee1, un-e** "u-e* 0)ic) inc-u1e 'o"0a"1 conte.t "e\ui"e a *i5ni'icant
a#ount o' "e*cannin5. L)at 1oe* inc"ea*e 0it) t)e nu#Ge" an1 co#&-e.it, o' "u-e* i* t)e *ize o' t)e
'inite auto#aton, an1 t)e"e'o"e t)e *ize o' t)e &"o5"a# 5ene"ate1 G, 7e..
In t)e &"o5"a# 0"itten G, 7e., t)e u*e"I* '"a5#ent* $"e&"e*entin5 t)e action* to Ge &e"'o"#e1 a* eac)
"e5u-a" e.&"e**ion i* 'oun1% a"e 5at)e"e1 a* ca*e* o' a *0itc). K)e auto#aton inte"&"ete" 1i"ect* t)e
cont"o- '-o0. O&&o"tunit, i* &"ovi1e1 'o" t)e u*e" to in*e"t eit)e" 1ec-a"ation* o" a11itiona- *tate#ent*
in t)e "outine containin5 t)e action*, o" to a11 *uG"outine* out*i1e t)i* action "outine.
7e. i* not -i#ite1 to *ou"ce 0)ic) can Ge inte"&"ete1 on t)e Ga*i* o' one c)a"acte" -ooHa)ea1. 6o"
e.a#&-e, i' t)e"e a"e t0o "u-e*, one -ooHin5 'o" aG an1 anot)e" 'o" aGc1e'5, an1 t)e in&ut *t"ea# i*
aGc1e'), 7e. 0i-- "eco5nize aG an1 -eave t)e in&ut &ointe" Su*t Ge'o"e c1. . . Ouc) GacHu& i* #o"e
co*t-, t)an t)e &"oce**in5 o' *i#&-e" -an5ua5e*.
&. 9e3 Source.
Srinivas Institute of Technology Department of MC !age 2&
System Software Lab
2010
K)e 5ene"a- 'o"#at o' 7e. *ou"ce i*9
.+efinition(/
%%
.rule(/
%%
.u(er (u0routine(/
0)e"e t)e 1e'inition* an1 t)e u*e" *uG"outine* a"e o'ten o#itte1. K)e *econ1 %% i* o&tiona-, Gut t)e
'i"*t i* "e\ui"e1 to #a"H t)e Ge5innin5 o' t)e "u-e*. K)e aG*o-ute #ini#u# 7e. &"o5"a# i* t)u*
%%
$no 1e'inition*, no "u-e*% 0)ic) t"an*-ate* into a &"o5"a# 0)ic) co&ie* t)e in&ut to t)e out&ut
unc)an5e1.
In t)e out-ine o' 7e. &"o5"a#* *)o0n aGove, t)e "u-e* "e&"e*ent t)e u*e"I* cont"o- 1eci*ion*; t)e, a"e a
taG-e, in 0)ic) t)e -e't co-u#n contain* "e5u-a" e.&"e**ion* $*ee *ection <% an1 t)e "i5)t co-u#n
contain* action*, &"o5"a# '"a5#ent* to Ge e.ecute1 0)en t)e e.&"e**ion* a"e "eco5nize1. K)u* an
in1ivi1ua- "u-e #i5)t a&&ea"
integer printf#$foun+ 1eywor+ I23$%"
to -ooH 'o" t)e *t"in5 inte5e" in t)e in&ut *t"ea# an1 &"int t)e #e**a5e [['oun1 He,0o"1 I/KII
0)eneve" it a&&ea"*. In t)i* e.a#&-e t)e )o*t &"oce1u"a- -an5ua5e i* 2 an1 t)e 2 -iG"a", 'unction
&"int' i* u*e1 to &"int t)e *t"in5. K)e en1 o' t)e e.&"e**ion i* in1icate1 G, t)e 'i"*t G-anH o" taG
c)a"acte". I' t)e action i* #e"e-, a *in5-e 2 e.&"e**ion, it can Su*t Ge 5iven on t)e "i5)t *i1e o' t)e -ine;
i' it i* co#&oun1, o" taHe* #o"e t)an a -ine, it *)ou-1 Ge enc-o*e1 in G"ace*. A* a *-i5)t-, #o"e u*e'u-
e.a#&-e, *u&&o*e it i* 1e*i"e1 to c)an5e a nu#Ge" o' 0o"1* '"o# V"iti*) to A#e"ican *&e--in5. 7e.
"u-e* *uc) a*
colour printf#$color$%"
'ec,&ni(e printf#$'ec,&ni4e$%"
petrol printf#$g&($%"
0ou-1 Ge a *ta"t. K)e*e "u-e* a"e not \uite enou5), *ince t)e 0o"1 &et"o-eu# 0ou-1 Geco#e 5a*eu#; a
0a, o' 1ea-in5 0it) t)i* 0i-- Ge 1e*c"iGe1 -ate".
(. 9e3 0egular =3#ressions.
K)e 1e'inition* o' "e5u-a" e.&"e**ion* a"e ve", *i#i-a" to t)o*e in ]EN [D]. A "e5u-a" e.&"e**ion
*&eci'ie* a *et o' *t"in5* to Ge #atc)e1. It contain* te.t c)a"acte"* $0)ic) #atc) t)e co""e*&on1in5
c)a"acte"* in t)e *t"in5* Gein5 co#&a"e1% an1 o&e"ato" c)a"acte"* $0)ic) *&eci', "e&etition*, c)oice*,
an1 ot)e" 'eatu"e*%. K)e -ette"* o' t)e a-&)aGet an1 t)e 1i5it* a"e a-0a,* te.t c)a"acte"*; t)u* t)e
"e5u-a" e.&"e**ion
integer
#atc)e* t)e *t"in5 inte5e" 0)e"eve" it a&&ea"* an1 t)e e.&"e**ion
&567
-ooH* 'o" t)e *t"in5 aDZN.
O&e"ato"*. K)e o&e"ato" c)a"acte"* a"e
$ \ [ 8 - 9 : ; + | # % ! < . / % = >
an1 i' t)e, a"e to Ge u*e1 a* te.t c)a"acte"*, an e*ca&e *)ou-1 Ge u*e1. K)e \uotation #a"H o&e"ato" $(%
in1icate* t)at 0)ateve" i* containe1 Get0een a &ai" o' \uote* i* to Ge taHen a* te.t c)a"acte"*. K)u*
xy4$++$
Srinivas Institute of Technology Department of MC !age 2'
System Software Lab
2010
#atc)e* t)e *t"in5 .,z++ 0)en it a&&ea"*. /ote t)at a &a"t o' a *t"in5 #a, Ge \uote1. It i* )a"#-e** Gut
unnece**a", to \uote an o"1ina", te.t c)a"acte"; t)e e.&"e**ion
$xy4++$
i* t)e *a#e a* t)e one aGove. K)u* G, \uotin5 eve", non-a-&)anu#e"ic c)a"acte" Gein5 u*e1 a* a te.t
c)a"acte", t)e u*e" can avoi1 "e#e#Ge"in5 t)e -i*t aGove o' cu""ent o&e"ato" c)a"acte"*, an1 i* *a'e
*)ou-1 'u"t)e" e.ten*ion* to 7e. -en5t)en t)e -i*t.
An o&e"ato" c)a"acte" #a, a-*o Ge tu"ne1 into a te.t c)a"acte" G, &"ece1in5 it 0it) ! a* in
xy4\+\+
0)ic) i* anot)e", -e** "ea1aG-e, e\uiva-ent o' t)e aGove e.&"e**ion*. Anot)e" u*e o' t)e \uotin5
#ec)ani*# i* to 5et a G-anH into an e.&"e**ion; no"#a--,, a* e.&-aine1 aGove, G-anH* o" taG* en1 a
"u-e. An, G-anH c)a"acte" not containe1 0it)in [] $*ee Ge-o0% #u*t Ge \uote1. Oeve"a- no"#a- 2
e*ca&e* 0it) ! a"e "eco5nize19 !n i* ne0-ine, !t i* taG, an1 !G i* GacH*&ace. Ko ente" ! it*e-', u*e !!. Oince
ne0-ine i* i--e5a- in an e.&"e**ion, !n #u*t Ge u*e1; it i* not "e\ui"e1 to e*ca&e taG an1 GacH*&ace.
Eve", c)a"acte" Gut G-anH, taG, ne0-ine an1 t)e -i*t aGove i* a-0a,* a te.t c)a"acte".
2)a"acte" c-a**e*. 2-a**e* o' c)a"acte"* can Ge *&eci'ie1 u*in5 t)e o&e"ato" &ai" []. K)e con*t"uction
[aGc] #atc)e* a *in5-e c)a"acte", 0)ic) #a, Ge a, G, o" c. Lit)in *\ua"e G"acHet*, #o*t o&e"ato"
#eanin5* a"e i5no"e1. On-, t)"ee c)a"acte"* a"e *&ecia-9 t)e*e a"e ! - an1 ^. K)e - c)a"acte" in1icate*
"an5e*. 6o" e.a#&-e,
[&-4>-?=>@
in1icate* t)e c)a"acte" c-a** containin5 a-- t)e -o0e" ca*e -ette"*, t)e 1i5it*, t)e an5-e G"acHet*, an1
un1e"-ine. Uan5e* #a, Ge 5iven in eit)e" o"1e". U*in5 - Get0een an, &ai" o' c)a"acte"* 0)ic) a"e not
Got) u&&e" ca*e -ette"*, Got) -o0e" ca*e -ette"*, o" Got) 1i5it* i* i#&-e#entation 1e&en1ent an1 0i-- 5et
a 0a"nin5 #e**a5e. $E.5., [0-z] in AO2II i* #an, #o"e c)a"acte"* t)an it i* in EV2NI2%. I' it i*
1e*i"e1 to inc-u1e t)e c)a"acte" - in a c)a"acte" c-a**, it *)ou-1 Ge 'i"*t o" -a*t; t)u*
[-+>-?
#atc)e* a-- t)e 1i5it* an1 t)e t0o *i5n*.
In c)a"acte" c-a**e*, t)e ^ o&e"ato" #u*t a&&ea" a* t)e 'i"*t c)a"acte" a'te" t)e -e't G"acHet; it in1icate*
t)at t)e "e*u-tin5 *t"in5 i* to Ge co#&-e#ente1 0it) "e*&ect to t)e co#&ute" c)a"acte" *et. K)u*
[8&0c
#atc)e* a-- c)a"acte"* e.ce&t a, G, o" c, inc-u1in5 a-- *&ecia- o" cont"o- c)a"acte"*; o"
[8&-4A-A
i* an, c)a"acte" 0)ic) i* not a -ette". K)e ! c)a"acte" &"ovi1e* t)e u*ua- e*ca&e* 0it)in c)a"acte" c-a**
G"acHet*.
A"Git"a", c)a"acte". Ko #atc) a-#o*t an, c)a"acte", t)e o&e"ato" c)a"acte" . i* t)e c-a** o' a-- c)a"acte"*
e.ce&t ne0-ine. E*ca&in5 into octa- i* &o**iG-e a-t)ou5) non-&o"taG-e9
[\B>-\16C
#atc)e* a-- &"intaG-e c)a"acte"* in t)e AO2II c)a"acte" *et, '"o# octa- ;0 $G-anH% to octa- 1ZC $ti-1e%.
O&tiona- e.&"e**ion*. K)e o&e"ato" = in1icate* an o&tiona- e-e#ent o' an e.&"e**ion. K)u*
&09c
#atc)e* eit)e" ac o" aGc.
Ue&eate1 e.&"e**ion*. Ue&etition* o' c-a**e* a"e in1icate1 G, t)e o&e"ato"* 8 an1 +.
Srinivas Institute of Technology Department of MC !age 2(
System Software Lab
2010
&;
i* an, nu#Ge" o' con*ecutive a c)a"acte"*, inc-u1in5 ze"o; 0)i-e
&+
i* one o" #o"e in*tance* o' a. 6o" e.a#&-e,
[&-4+
i* a-- *t"in5* o' -o0e" ca*e -ette"*. An1
[A-A&-4[A-A&-4>-?;
in1icate* a-- a-&)anu#e"ic *t"in5* 0it) a -ea1in5 a-&)aGetic c)a"acte". K)i* i* a t,&ica- e.&"e**ion 'o"
"eco5nizin5 i1enti'ie"* in co#&ute" -an5ua5e*.
A-te"nation an1 M"ou&in5. K)e o&e"ato" in1icate* a-te"nation9
#&0|c+%
#atc)e* eit)e" aG o" c1. /ote t)at &a"ent)e*e* a"e u*e1 'o" 5"ou&in5, a-t)ou5) t)e, a"e not nece**a",
on t)e out*i1e -eve-;
&0|c+
0ou-1 )ave *u''ice1. ?a"ent)e*e* can Ge u*e1 'o" #o"e co#&-e. e.&"e**ion*9
#&0|c++%9#ef%;
#atc)e* *uc) *t"in5* a* aGe'e', e'e'e', c1e', o" c111; Gut not aGc, aGc1, o" aGc1e'.
2onte.t *en*itivit,. 7e. 0i-- "eco5nize a *#a-- a#ount o' *u""oun1in5 conte.t. K)e t0o *i#&-e*t
o&e"ato"* 'o" t)i* a"e ^ an1 Y. I' t)e 'i"*t c)a"acte" o' an e.&"e**ion i* ^, t)e e.&"e**ion 0i-- on-, Ge
#atc)e1 at t)e Ge5innin5 o' a -ine $a'te" a ne0-ine c)a"acte", o" at t)e Ge5innin5 o' t)e in&ut *t"ea#%.
K)i* can neve" con'-ict 0it) t)e ot)e" #eanin5 o' ^, co#&-e#entation o' c)a"acte" c-a**e*, *ince t)at
on-, a&&-ie* 0it)in t)e [] o&e"ato"*. I' t)e ve", -a*t c)a"acte" i* Y, t)e e.&"e**ion 0i-- on-, Ge #atc)e1
at t)e en1 o' a -ine $0)en i##e1iate-, 'o--o0e1 G, ne0-ine%. K)e -atte" o&e"ato" i* a *&ecia- ca*e o' t)e
F o&e"ato" c)a"acte", 0)ic) in1icate* t"ai-in5 conte.t. K)e e.&"e**ion
&0<c+
#atc)e* t)e *t"in5 aG, Gut on-, i' 'o--o0e1 G, c1. K)u*
&0!
i* t)e *a#e a*
&0<\n
7e't conte.t i* )an1-e1 in 7e. G, *ta"t con1ition* a* e.&-aine1 in *ection 10. I' a "u-e i* on-, to Ge
e.ecute1 0)en t)e 7e. auto#aton inte"&"ete" i* in *ta"t con1ition ., t)e "u-e *)ou-1 Ge &"e'i.e1 G,
=x>
u*in5 t)e an5-e G"acHet o&e"ato" c)a"acte"*. I' 0e con*i1e"e1 [[Gein5 at t)e Ge5innin5 o' a -ineII to Ge
*ta"t con1ition O/E, t)en t)e ^ o&e"ato" 0ou-1 Ge e\uiva-ent to
=O2D>
Ota"t con1ition* a"e e.&-aine1 #o"e 'u--, -ate".
Ue&etition* an1 Ne'inition*. K)e o&e"ato"* {} *&eci', eit)e" "e&etition* $i' t)e, enc-o*e nu#Ge"*% o"
1e'inition e.&an*ion $i' t)e, enc-o*e a na#e%. 6o" e.a#&-e
.+igit/
-ooH* 'o" a &"e1e'ine1 *t"in5 na#e1 1i5it an1 in*e"t* it at t)at &oint in t)e e.&"e**ion. K)e 1e'inition*
a"e 5iven in t)e 'i"*t &a"t o' t)e 7e. in&ut, Ge'o"e t)e "u-e*. In cont"a*t,
&.1E5/
-ooH* 'o" 1 to D occu""ence* o' a.
6ina--,, initia- % i* *&ecia-, Gein5 t)e *e&a"ato" 'o" 7e. *ou"ce *e5#ent*.
Srinivas Institute of Technology Department of MC !age "0
System Software Lab
2010
4. 9e3 +ctions.
L)en an e.&"e**ion 0"itten a* aGove i* #atc)e1, 7e. e.ecute* t)e co""e*&on1in5 action. K)i* *ection
1e*c"iGe* *o#e 'eatu"e* o' 7e. 0)ic) ai1 in 0"itin5 action*. /ote t)at t)e"e i* a 1e'au-t action, 0)ic)
con*i*t* o' co&,in5 t)e in&ut to t)e out&ut. K)i* i* &e"'o"#e1 on a-- *t"in5* not ot)e"0i*e #atc)e1.
K)u* t)e 7e. u*e" 0)o 0i*)e* to aG*o"G t)e enti"e in&ut, 0it)out &"o1ucin5 an, out&ut, #u*t &"ovi1e
"u-e* to #atc) eve",t)in5. L)en 7e. i* Gein5 u*e1 0it) Bacc, t)i* i* t)e no"#a- *ituation. One #a,
con*i1e" t)at action* a"e 0)at i* 1one in*tea1 o' co&,in5 t)e in&ut to t)e out&ut; t)u*, in 5ene"a-, a "u-e
0)ic) #e"e-, co&ie* can Ge o#itte1. A-*o, a c)a"acte" co#Gination 0)ic) i* o#itte1 '"o# t)e "u-e*
an1 0)ic) a&&ea"* a* in&ut i* -iHe-, to Ge &"inte1 on t)e out&ut, t)u* ca--in5 attention to t)e 5a& in t)e
"u-e*.
One o' t)e *i#&-e*t t)in5* t)at can Ge 1one i* to i5no"e t)e in&ut. O&eci',in5 a 2 nu-- *tate#ent, ; a* an
action cau*e* t)i* "e*u-t. A '"e\uent "u-e i*
[ \t\n "
0)ic) cau*e* t)e t)"ee *&acin5 c)a"acte"* $G-anH, taG, an1 ne0-ine% to Ge i5no"e1.
Anot)e" ea*, 0a, to avoi1 0"itin5 action* i* t)e action c)a"acte" , 0)ic) in1icate* t)at t)e action 'o"
t)i* "u-e i* t)e action 'o" t)e ne.t "u-e. K)e &"eviou* e.a#&-e cou-1 a-*o )ave Geen 0"itten
$ $
$\t$
$\n$
0it) t)e *a#e "e*u-t, a-t)ou5) in 1i''e"ent *t,-e. K)e \uote* a"oun1 !n an1 !t a"e not "e\ui"e1.
In #o"e co#&-e. action*, t)e u*e" 0i-- o'ten 0ant to Hno0 t)e actua- te.t t)at #atc)e1 *o#e
e.&"e**ion -iHe [a-z]+. 7e. -eave* t)i* te.t in an e.te"na- c)a"acte" a""a, na#e1 ,,te.t. K)u*, to &"int
t)e na#e 'oun1, a "u-e -iHe
[&-4+ printf#$%($E yytext%"
0i-- &"int t)e *t"in5 in ,,te.t. K)e 2 'unction &"int' acce&t* a 'o"#at a"5u#ent an1 1ata to Ge &"inte1;
in t)i* ca*e, t)e 'o"#at i* [[&"int *t"in5II $% in1icatin5 1ata conve"*ion, an1 * in1icatin5 *t"in5 t,&e%,
an1 t)e 1ata a"e t)e c)a"acte"* in ,,te.t. Oo t)i* Su*t &-ace* t)e #atc)e1 *t"in5 on t)e out&ut. K)i*
action i* *o co##on t)at it #a, Ge 0"itten a* E2WO9
[&-4+ DFGO"
i* t)e *a#e a* t)e aGove. Oince t)e 1e'au-t action i* Su*t to &"int t)e c)a"acte"* 'oun1, one #i5)t a*H
0), 5ive a "u-e, -iHe t)i* one, 0)ic) #e"e-, *&eci'ie* t)e 1e'au-t action= Ouc) "u-e* a"e o'ten "e\ui"e1
to avoi1 #atc)in5 *o#e ot)e" "u-e 0)ic) i* not 1e*i"e1. 6o" e.a#&-e, i' t)e"e i* a "u-e 0)ic) #atc)e*
"ea1 it 0i-- no"#a--, #atc) t)e in*tance* o' "ea1 containe1 in G"ea1 o" "ea1Su*t; to avoi1 t)i*, a "u-e o'
t)e 'o"# [a-z]+ i* nee1e1. K)i* i* e.&-aine1 'u"t)e" Ge-o0.
Oo#eti#e* it i* #o"e convenient to Hno0 t)e en1 o' 0)at )a* Geen 'oun1; )ence 7e. a-*o &"ovi1e* a
count ,,-en5 o' t)e nu#Ge" o' c)a"acte"* #atc)e1. Ko count Got) t)e nu#Ge" o' 0o"1* an1 t)e nu#Ge"
o' c)a"acte"* in 0o"1* in t)e in&ut, t)e u*e" #i5)t 0"ite [a-zA-Z]+ {0o"1*++; c)a"* += ,,-en5;} 0)ic)
accu#u-ate* in c)a"* t)e nu#Ge" o' c)a"acte"* in t)e 0o"1* "eco5nize1. K)e -a*t c)a"acte" in t)e *t"in5
#atc)e1 can Ge acce**e1 G,
yytext[yyleng-1
Srinivas Institute of Technology Department of MC !age "1
System Software Lab
2010
Occa*iona--,, a 7e. action #a, 1eci1e t)at a "u-e )a* not "eco5nize1 t)e co""ect *&an o' c)a"acte"*.
K0o "outine* a"e &"ovi1e1 to ai1 0it) t)i* *ituation. 6i"*t, ,,#o"e$% can Ge ca--e1 to in1icate t)at t)e
ne.t in&ut e.&"e**ion "eco5nize1 i* to Ge tacHe1 on to t)e en1 o' t)i* in&ut. /o"#a--,, t)e ne.t in&ut
*t"in5 0ou-1 ove"0"ite t)e cu""ent ent", in ,,te.t. Oecon1, ,,-e** $n% #a, Ge ca--e1 to in1icate t)at not
a-- t)e c)a"acte"* #atc)e1 G, t)e cu""ent-, *ucce**'u- e.&"e**ion a"e 0ante1 "i5)t no0. K)e a"5u#ent
n in1icate* t)e nu#Ge" o' c)a"acte"* in ,,te.t to Ge "etaine1. 6u"t)e" c)a"acte"* &"eviou*-, #atc)e1 a"e
"etu"ne1 to t)e in&ut. K)i* &"ovi1e* t)e *a#e *o"t o' -ooHa)ea1 o''e"e1 G, t)e F o&e"ato", Gut in a
1i''e"ent 'o"#.
E.a#&-e9 2on*i1e" a -an5ua5e 0)ic) 1e'ine* a *t"in5 a* a *et o' c)a"acte"* Get0een \uotation $(%
#a"H*, an1 &"ovi1e* t)at to inc-u1e a ( in a *t"in5 it #u*t Ge &"ece1e1 G, a !. K)e "e5u-a" e.&"e**ion
0)ic) #atc)e* t)at i* *o#e0)at con'u*in5, *o t)at it #i5)t Ge &"e'e"aG-e to 0"ite
\$[8$; .
if #yytext[yyleng-1 HH I\\I%
yy'ore#%"
el(e
::: nor'&l u(er proce((ing
/
0)ic) 0i--, 0)en 'ace1 0it) a *t"in5 *uc) a* (aGc!(1e'( 'i"*t #atc) t)e 'ive c)a"acte"* (aGc!; t)en t)e
ca-- to ,,#o"e$% 0i-- cau*e t)e ne.t &a"t o' t)e *t"in5, (1e', to Ge tacHe1 on t)e en1. /ote t)at t)e 'ina-
\uote te"#inatin5 t)e *t"in5 *)ou-1 Ge &icHe1 u& in t)e co1e -aGe-e1 [[no"#a- &"oce**in5II.
K)e 'unction ,,-e**$% #i5)t Ge u*e1 to "e&"oce** te.t in va"iou* ci"cu#*tance*. 2on*i1e" t)e 2
&"oG-e# o' 1i*tin5ui*)in5 t)e a#Gi5uit, o' [[=-aII. Ou&&o*e it i* 1e*i"e1 to t"eat t)i* a* [[=- aII Gut &"int
a #e**a5e. A "u-e #i5)t Ge
H-[&-4A-A .
printf#$Op #H-% &'0iguou(\n$%"
yyle((#yyleng-1%"
::: &ction for H- :::
/
0)ic) &"int* a #e**a5e, "etu"n* t)e -ette" a'te" t)e o&e"ato" to t)e in&ut *t"ea#, an1 t"eat* t)e o&e"ato"
a* [[=-II. A-te"native-, it #i5)t Ge 1e*i"e1 to t"eat t)i* a* [[= -aII. Ko 1o t)i*, Su*t "etu"n t)e #inu* *i5n
a* 0e-- a* t)e -ette" to t)e in&ut9
H-[&-4A-A .
printf#$Op #H-% &'0iguou(\n$%"
yyle((#yyleng--%"
::: &ction for H :::
/
0i-- &e"'o"# t)e ot)e" inte"&"etation. /ote t)at t)e e.&"e**ion* 'o" t)e t0o ca*e* #i5)t #o"e ea*i-, Ge
0"itten
H-<[A-A&-4
in t)e 'i"*t ca*e an1
H<-[A-A&-4
in t)e *econ1; no GacHu& 0ou-1 Ge "e\ui"e1 in t)e "u-e action. It i* not nece**a", to "eco5nize t)e
0)o-e i1enti'ie" to oG*e"ve t)e a#Gi5uit,. K)e &o**iGi-it, o' [[=-<II, )o0eve", #aHe*
H-<[8 \t\n
a *ti-- Gette" "u-e.
Srinivas Institute of Technology Department of MC !age "2
System Software Lab
2010
In a11ition to t)e*e "outine*, 7e. a-*o &e"#it* acce** to t)e IFO "outine* it u*e*. K)e, a"e9
1% in&ut$% 0)ic) "etu"n* t)e ne.t in&ut c)a"acte";
4% out&ut$c% 0)ic) 0"ite* t)e c)a"acte" c on t)e out&ut; an1
<% un&ut$c% &u*)e* t)e c)a"acte" c GacH onto t)e in&ut *t"ea# to Ge "ea1 -ate" G, in&ut$%.
V, 1e'au-t t)e*e "outine* a"e &"ovi1e1 a* #ac"o 1e'inition*, Gut t)e u*e" can ove""i1e t)e# an1 *u&&-,
&"ivate ve"*ion*. K)e*e "outine* 1e'ine t)e "e-ation*)i& Get0een e.te"na- 'i-e* an1 inte"na- c)a"acte"*,
an1 #u*t a-- Ge "etaine1 o" #o1i'ie1 con*i*tent-,. K)e, #a, Ge "e1e'ine1, to cau*e in&ut o" out&ut to
Ge t"an*#itte1 to o" '"o# *t"an5e &-ace*, inc-u1in5 ot)e" &"o5"a#* o" inte"na- #e#o",; Gut t)e
c)a"acte" *et u*e1 #u*t Ge con*i*tent in a-- "outine*; a va-ue o' ze"o "etu"ne1 G, in&ut #u*t #ean en1
o' 'i-e; an1 t)e "e-ation*)i& Get0een un&ut an1 in&ut #u*t Ge "etaine1 o" t)e 7e. -ooHa)ea1 0i-- not
0o"H. 7e. 1oe* not -ooH a)ea1 at a-- i' it 1oe* not )ave to, Gut eve", "u-e en1in5 in + 8 = o" Y o"
containin5 F i#&-ie* -ooHa)ea1. 7ooHa)ea1 i* a-*o nece**a", to #atc) an e.&"e**ion t)at i* a &"e'i. o'
anot)e" e.&"e**ion. Oee Ge-o0 'o" a 1i*cu**ion o' t)e c)a"acte" *et u*e1 G, 7e.. K)e *tan1a"1 7e.
-iG"a", i#&o*e* a 100 c)a"acte" -i#it on GacHu&.
Anot)e" 7e. -iG"a", "outine t)at t)e u*e" 0i-- *o#eti#e* 0ant to "e1e'ine i* ,,0"a&$% 0)ic) i* ca--e1
0)eneve" 7e. "eac)e* an en1-o'-'i-e. I' ,,0"a& "etu"n* a 1, 7e. continue* 0it) t)e no"#a- 0"a&u& on
en1 o' in&ut. Oo#eti#e*, )o0eve", it i* convenient to a""an5e 'o" #o"e in&ut to a""ive '"o# a ne0
*ou"ce. In t)i* ca*e, t)e u*e" *)ou-1 &"ovi1e a ,,0"a& 0)ic) a""an5e* 'o" ne0 in&ut an1 "etu"n* 0. K)i*
in*t"uct* 7e. to continue &"oce**in5. K)e 1e'au-t ,,0"a& a-0a,* "etu"n* 1.
K)i* "outine i* a-*o a convenient &-ace to &"int taG-e*, *u##a"ie*, etc. at t)e en1 o' a &"o5"a#. /ote
t)at it i* not &o**iG-e to 0"ite a no"#a- "u-e 0)ic) "eco5nize* en1-o'-'i-e; t)e on-, acce** to t)i*
con1ition i* t)"ou5) ,,0"a&. In 'act, un-e** a &"ivate ve"*ion o' in&ut$% i* *u&&-ie1 a 'i-e containin5
nu--* cannot Ge )an1-e1, *ince a va-ue o' 0 "etu"ne1 G, in&ut i* taHen to Ge en1-o'-'i-e.
!. +mbiguous Source 0ules.
7e. can )an1-e a#Gi5uou* *&eci'ication*. L)en #o"e t)an one e.&"e**ion can #atc) t)e cu""ent in&ut,
7e. c)oo*e* a* 'o--o0*9
1% K)e -on5e*t #atc) i* &"e'e""e1.
4% A#on5 "u-e* 0)ic) #atc)e1 t)e *a#e nu#Ge" o' c)a"acte"*, t)e "u-e 5iven 'i"*t i* &"e'e""e1.
K)u*, *u&&o*e t)e "u-e*
integer 1eywor+ &ction :::"
[&-4+ i+entifier &ction :::"
to Ge 5iven in t)at o"1e". I' t)e in&ut i* inte5e"*, it i* taHen a* an i1enti'ie", Gecau*e [a-z]+ #atc)e* _
c)a"acte"* 0)i-e inte5e" #atc)e* on-, Z. I' t)e in&ut i* inte5e", Got) "u-e* #atc) Z c)a"acte"*, an1 t)e
He,0o"1 "u-e i* *e-ecte1 Gecau*e it 0a* 5iven 'i"*t. An,t)in5 *)o"te" $e.5. int% 0i-- not #atc) t)e
e.&"e**ion inte5e" an1 *o t)e i1enti'ie" inte"&"etation i* u*e1.
Srinivas Institute of Technology Department of MC !age ""
System Software Lab
2010
K)e &"inci&-e o' &"e'e""in5 t)e -on5e*t #atc) #aHe* "u-e* containin5 e.&"e**ion* -iHe .8 1an5e"ou*.
6o" e.a#&-e, I.8I #i5)t *ee# a 5oo1 0a, o' "eco5nizin5 a *t"in5 in *in5-e \uote*. Vut it i* an invitation
'o" t)e &"o5"a# to "ea1 'a" a)ea1, -ooHin5 'o" a 1i*tant *in5-e \uote. ?"e*ente1 0it) t)e in&ut
Ifir(tI Juote+ (tring ,ereE I(econ+I ,ere
t)e aGove e.&"e**ion 0i-- #atc)
Ifir(tI Juote+ (tring ,ereE I(econ+I
0)ic) i* &"oGaG-, not 0)at 0a* 0ante1. A Gette" "u-e i* o' t)e 'o"#
I[8I\n;I
0)ic), on t)e aGove in&ut, 0i-- *to& a'te" I'i"*tI. K)e con*e\uence* o' e""o"* -iHe t)i* a"e #iti5ate1 G,
t)e 'act t)at t)e . o&e"ato" 0i-- not #atc) ne0-ine. K)u* e.&"e**ion* -iHe .8 *to& on t)e cu""ent -ine.
NonIt t", to 1e'eat t)i* 0it) e.&"e**ion* -iHe $.!n%+ o" e\uiva-ent*; t)e 7e. 5ene"ate1 &"o5"a# 0i-- t",
to "ea1 t)e enti"e in&ut 'i-e, cau*in5 inte"na- Gu''e" ove"'-o0*.
/ote t)at 7e. i* no"#a--, &a"titionin5 t)e in&ut *t"ea#, not *ea"c)in5 'o" a-- &o**iG-e #atc)e* o' eac)
e.&"e**ion. K)i* #ean* t)at eac) c)a"acte" i* accounte1 'o" once an1 on-, once. 6o" e.a#&-e, *u&&o*e
it i* 1e*i"e1 to count occu""ence* o' Got) *)e an1 )e in an in&ut te.t. Oo#e 7e. "u-e* to 1o t)i* #i5)t
Ge
(,e (++"
,e ,++"
\n |
: "
0)e"e t)e -a*t t0o "u-e* i5no"e eve",t)in5 Ge*i1e* )e an1 *)e. Ue#e#Ge" t)at . 1oe* not inc-u1e
ne0-ine. Oince *)e inc-u1e* )e, 7e. 0i-- no"#a--, not "eco5nize t)e in*tance* o' )e inc-u1e1 in *)e,
*ince once it )a* &a**e1 a *)e t)o*e c)a"acte"* a"e 5one.
Oo#eti#e* t)e u*e" 0ou-1 -iHe to ove""i1e t)i* c)oice. K)e action UE3E2K #ean* [[5o 1o t)e ne.t
a-te"native.II It cau*e* 0)ateve" "u-e 0a* *econ1 c)oice a'te" t)e cu""ent "u-e to Ge e.ecute1. K)e
&o*ition o' t)e in&ut &ointe" i* a1Su*te1 acco"1in5-,. Ou&&o*e t)e u*e" "ea--, 0ant* to count t)e
inc-u1e1 in*tance* o' )e9
(,e .(++" KDLDF3"/
,e .,++" KDLDF3"/
\n |
: "
t)e*e "u-e* a"e one 0a, o' c)an5in5 t)e &"eviou* e.a#&-e to 1o Su*t t)at. A'te" countin5 eac)
e.&"e**ion, it i* "eSecte1; 0)eneve" a&&"o&"iate, t)e ot)e" e.&"e**ion 0i-- t)en Ge counte1. In t)i*
e.a#&-e, o' cou"*e, t)e u*e" cou-1 note t)at *)e inc-u1e* )e Gut not vice ve"*a, an1 o#it t)e UE3E2K
action on )e; in ot)e" ca*e*, )o0eve", it 0ou-1 not Ge &o**iG-e a &"io"i to te-- 0)ic) in&ut c)a"acte"*
0e"e in Got) c-a**e*.
2on*i1e" t)e t0o "u-e*
&[0c+ . ::: " KDLDF3"/
&[c++ . ::: " KDLDF3"/
I' t)e in&ut i* aG, on-, t)e 'i"*t "u-e #atc)e*, an1 on a1 on-, t)e *econ1 #atc)e*. K)e in&ut *t"in5 accG
#atc)e* t)e 'i"*t "u-e 'o" 'ou" c)a"acte"* an1 t)en t)e *econ1 "u-e 'o" t)"ee c)a"acte"*. In cont"a*t, t)e
in&ut acc1 a5"ee* 0it) t)e *econ1 "u-e 'o" 'ou" c)a"acte"* an1 t)en t)e 'i"*t "u-e 'o" t)"ee.
In 5ene"a-, UE3E2K i* u*e'u- 0)eneve" t)e &u"&o*e o' 7e. i* not to &a"tition t)e in&ut *t"ea# Gut to
1etect a-- e.a#&-e* o' *o#e ite#* in t)e in&ut, an1 t)e in*tance* o' t)e*e ite#* #a, ove"-a& o" inc-u1e
Srinivas Institute of Technology Department of MC !age "#
System Software Lab
2010
eac) ot)e". Ou&&o*e a 1i5"a# taG-e o' t)e in&ut i* 1e*i"e1; no"#a--, t)e 1i5"a#* ove"-a&, t)at i* t)e
0o"1 t)e i* con*i1e"e1 to contain Got) t) an1 )e. A**u#in5 a t0o-1i#en*iona- a""a, na#e1 1i5"a# to
Ge inc"e#ente1, t)e a&&"o&"iate *ou"ce i*
%%
[&-4[&-4 .
+igr&'[yytext[>[yytext[1++"
KDLDF3"
/
: "
\n "
0)e"e t)e UE3E2K i* nece**a", to &icH u& a -ette" &ai" Ge5innin5 at eve", c)a"acte", "at)e" t)an at
eve", ot)e" c)a"acte".
1. 9e3 Source >efinitions.
Ue#e#Ge" t)e 'o"#at o' t)e 7e. *ou"ce9
.+efinition(/
%%
.rule(/
%%
.u(er routine(/
Oo 'a" on-, t)e "u-e* )ave Geen 1e*c"iGe1. K)e u*e" nee1* a11itiona- o&tion*, t)ou5), to 1e'ine
va"iaG-e* 'o" u*e in )i* &"o5"a# an1 'o" u*e G, 7e.. K)e*e can 5o eit)e" in t)e 1e'inition* *ection o" in
t)e "u-e* *ection.
Ue#e#Ge" t)at 7e. i* tu"nin5 t)e "u-e* into a &"o5"a#. An, *ou"ce not inte"ce&te1 G, 7e. i* co&ie1
into t)e 5ene"ate1 &"o5"a#. K)e"e a"e t)"ee c-a**e* o' *uc) t)in5*.
1% An, -ine 0)ic) i* not &a"t o' a 7e. "u-e o" action 0)ic) Ge5in* 0it) a G-anH o" taG i* co&ie1 into t)e
7e. 5ene"ate1 &"o5"a#. Ouc) *ou"ce in&ut &"io" to t)e 'i"*t %% 1e-i#ite" 0i-- Ge e.te"na- to an,
'unction in t)e co1e; i' it a&&ea"* i##e1iate-, a'te" t)e 'i"*t %%, it a&&ea"* in an a&&"o&"iate &-ace 'o"
1ec-a"ation* in t)e 'unction 0"itten G, 7e. 0)ic) contain* t)e action*. K)i* #ate"ia- #u*t -ooH -iHe
&"o5"a# '"a5#ent*, an1 *)ou-1 &"ece1e t)e 'i"*t 7e. "u-e. A* a *i1e e''ect o' t)e aGove, -ine* 0)ic)
Ge5in 0it) a G-anH o" taG, an1 0)ic) contain a co##ent, a"e &a**e1 t)"ou5) to t)e 5ene"ate1 &"o5"a#.
K)i* can Ge u*e1 to inc-u1e co##ent* in eit)e" t)e 7e. *ou"ce o" t)e 5ene"ate1 co1e. K)e co##ent*
*)ou-1 'o--o0 t)e )o*t -an5ua5e convention.
4% An,t)in5 inc-u1e1 Get0een -ine* containin5 on-, %{ an1 %} i* co&ie1 out a* aGove. K)e 1e-i#ite"*
a"e 1i*ca"1e1. K)i* 'o"#at &e"#it* ente"in5 te.t -iHe &"e&"oce**o" *tate#ent* t)at #u*t Ge5in in co-u#n
1, o" co&,in5 -ine* t)at 1o not -ooH -iHe &"o5"a#*.
<% An,t)in5 a'te" t)e t)i"1 %% 1e-i#ite", "e5a"1-e** o' 'o"#at*, etc., i* co&ie1 out a'te" t)e 7e. out&ut.
Ne'inition* inten1e1 'o" 7e. a"e 5iven Ge'o"e t)e 'i"*t %% 1e-i#ite". An, -ine in t)i* *ection not
containe1 Get0een %{ an1 %}, an1 Ge5inin5 in co-u#n 1, i* a**u#e1 to 1e'ine 7e. *uG*titution
*t"in5*. K)e 'o"#at o' *uc) -ine* i* na#e t"an*-ation an1 it cau*e* t)e *t"in5 5iven a* a t"an*-ation to Ge
a**ociate1 0it) t)e na#e. K)e na#e an1 t"an*-ation #u*t Ge *e&a"ate1 G, at -ea*t one G-anH o" taG, an1
t)e na#e #u*t Ge5in 0it) a -ette". K)e t"an*-ation can t)en Ge ca--e1 out G, t)e {na#e} *,nta. in a
Srinivas Institute of Technology Department of MC !age "$
System Software Lab
2010
"u-e. U*in5 {N} 'o" t)e 1i5it* an1 {E} 'o" an e.&onent 'ie-1, 'o" e.a#&-e, #i5)t aGG"eviate "u-e* to
"eco5nize nu#Ge"*9
7 [>-?
D [7D+e[-+9.7/+
%%
.7/+ printf#$integer$%"
.7/+$:$.7/;#.D/%9 |
.7/;$:$.7/+#.D/%9 |
.7/+.D/
/ote t)e 'i"*t t0o "u-e* 'o" "ea- nu#Ge"*; Got) "e\ui"e a 1eci#a- &oint an1 contain an o&tiona-
e.&onent 'ie-1, Gut t)e 'i"*t "e\ui"e* at -ea*t one 1i5it Ge'o"e t)e 1eci#a- &oint an1 t)e *econ1 "e\ui"e*
at -ea*t one 1i5it a'te" t)e 1eci#a- &oint. Ko co""ect-, )an1-e t)e &"oG-e# &o*e1 G, a 6o"t"an
e.&"e**ion *uc) a* <D.E].I, 0)ic) 1oe* not contain a "ea- nu#Ge", a conte.t-*en*itive "u-e *uc) a*
[>-?+<$:$DM printf#$integer$%"
cou-1 Ge u*e1 in a11ition to t)e no"#a- "u-e 'o" inte5e"*.
K)e 1e'inition* *ection #a, a-*o contain ot)e" co##an1*, inc-u1in5 t)e *e-ection o' a )o*t -an5ua5e, a
c)a"acte" *et taG-e, a -i*t o' *ta"t con1ition*, o" a1Su*t#ent* to t)e 1e'au-t *ize o' a""a,* 0it)in 7e.
it*e-' 'o" -a"5e" *ou"ce &"o5"a#*. K)e*e &o**iGi-itie* a"e 1i*cu**e1 Ge-o0 un1e" [[Ou##a", o' Oou"ce
6o"#at,II *ection 14.
4. Usage.
K)e"e a"e t0o *te&* in co#&i-in5 a 7e. *ou"ce &"o5"a#. 6i"*t, t)e 7e. *ou"ce #u*t Ge tu"ne1 into a
5ene"ate1 &"o5"a# in t)e )o*t 5ene"a- &u"&o*e -an5ua5e. K)en t)i* &"o5"a# #u*t Ge co#&i-e1 an1
-oa1e1, u*ua--, 0it) a -iG"a", o' 7e. *uG"outine*. K)e 5ene"ate1 &"o5"a# i* on a 'i-e na#e1 -e..,,.c.
K)e IFO -iG"a", i* 1e'ine1 in te"#* o' t)e 2 *tan1a"1 -iG"a", [C].
K)e 2 &"o5"a#* 5ene"ate1 G, 7e. a"e *-i5)t-, 1i''e"ent on OOF<Z0, Gecau*e t)e OO co#&i-e" i* -e**
&o0e"'u- t)an t)e U/IX o" M2OO co#&i-e"*, an1 1oe* -e** at co#&i-e ti#e. 2 &"o5"a#* 5ene"ate1 on
M2OO an1 U/IX a"e t)e *a#e.
U/IX. K)e -iG"a", i* acce**e1 G, t)e -oa1e" '-a5 ---. Oo an a&&"o&"iate *et o' co##an1* i* -e. *ou"ce
cc -e..,,.c --- K)e "e*u-tin5 &"o5"a# i* &-ace1 on t)e u*ua- 'i-e a.out 'o" -ate" e.ecution. Ko u*e 7e.
0it) Bacc *ee Ge-o0. A-t)ou5) t)e 1e'au-t 7e. IFO "outine* u*e t)e 2 *tan1a"1 -iG"a",, t)e 7e.
auto#ata t)e#*e-ve* 1o not 1o *o; i' &"ivate ve"*ion* o' in&ut, out&ut an1 un&ut a"e 5iven, t)e -iG"a",
can Ge avoi1e1.
?. 9e3 and @acc.
I' ,ou 0ant to u*e 7e. 0it) Bacc, note t)at 0)at 7e. 0"ite* i* a &"o5"a# na#e1 ,,-e.$%, t)e na#e
"e\ui"e1 G, Bacc 'o" it* ana-,ze". /o"#a--,, t)e 1e'au-t #ain &"o5"a# on t)e 7e. -iG"a", ca--* t)i*
"outine, Gut i' Bacc i* -oa1e1, an1 it* #ain &"o5"a# i* u*e1, Bacc 0i-- ca-- ,,-e.$%. In t)i* ca*e eac)
7e. "u-e *)ou-1 en1 0it)
return#to1en%"
0)e"e t)e a&&"o&"iate toHen va-ue i* "etu"ne1. An ea*, 0a, to 5et acce** to BaccI* na#e* 'o" toHen* i*
to co#&i-e t)e 7e. out&ut 'i-e a* &a"t o' t)e Bacc out&ut 'i-e G, &-acin5 t)e -ine P inc-u1e (-e..,,.c( in
Srinivas Institute of Technology Department of MC !age "%
System Software Lab
2010
t)e -a*t *ection o' Bacc in&ut. Ou&&o*in5 t)e 5"a##a" to Ge na#e1 [[5oo1II an1 t)e -e.ica- "u-e* to Ge
na#e1 [[Gette"II t)e U/IX co##an1 *e\uence can Su*t Ge9
y&cc goo+
lex 0etter
cc y:t&0:c -ly -ll
K)e Bacc -iG"a", $--,% *)ou-1 Ge -oa1e1 Ge'o"e t)e 7e. -iG"a",, to oGtain a #ain &"o5"a# 0)ic) invoHe*
t)e Bacc &a"*e". K)e 5ene"ation* o' 7e. an1 Bacc &"o5"a#* can Ge 1one in eit)e" o"1e".
. =3am#les.
A* a t"ivia- &"oG-e#, con*i1e" co&,in5 an in&ut 'i-e 0)i-e a11in5 < to eve", &o*itive nu#Ge" 1ivi*iG-e
G, Z. We"e i* a *uitaG-e 7e. *ou"ce &"o5"a#
%%
int 1"
[>-?+ .
1 H &toi#yytext%"
if #1%6 HH >%
printf#$%+$E 1+N%"
el(e
printf#$%+$E1%"
/
to 1o Su*t t)at. K)e "u-e [0->]+ "eco5nize* *t"in5* o' 1i5it*; atoi conve"t* t)e 1i5it* to Gina", an1 *to"e*
t)e "e*u-t in H. K)e o&e"ato" % $"e#ain1e"% i* u*e1 to c)ecH 0)et)e" H i* 1ivi*iG-e G, Z; i' it i*, it i*
inc"e#ente1 G, < a* it i* 0"itten out. It #a, Ge oGSecte1 t)at t)i* &"o5"a# 0i-- a-te" *uc) in&ut ite#* a*
;>.C< o" XZ. 6u"t)e"#o"e, it inc"e#ent* t)e aG*o-ute va-ue o' a-- ne5ative nu#Ge"* 1ivi*iG-e G, Z. Ko
avoi1 t)i*, Su*t a11 a 'e0 #o"e "u-e* a'te" t)e active one, a* )e"e9
%%
int 1"
-9[>-?+ .
1 H &toi#yytext%"
printf#$%+$E
1%6 HH > 9 1+N O 1%"
/
-9[>-?:+ DFGO"
[A-A&-4[A-A&-4>-?+ DFGO"
/u#e"ica- *t"in5* containin5 a [[.II o" &"ece1e1 G, a -ette" 0i-- Ge &icHe1 u& G, one o' t)e -a*t t0o
"u-e*, an1 not c)an5e1. K)e i'-e-*e )a* Geen "e&-ace1 G, a 2 con1itiona- e.&"e**ion to *ave *&ace; t)e
'o"# a=G9c #ean* [[i' a t)en G e-*e cII.
6o" an e.a#&-e o' *tati*tic* 5at)e"in5, )e"e i* a &"o5"a# 0)ic) )i*to5"a#* t)e -en5t)* o' 0o"1*, 0)e"e
a 0o"1 i* 1e'ine1 a* a *t"in5 o' -ette"*.
int leng([1>>"
%%
[&-4+ leng([yyleng++"
: |
\n "
%%
yywr&p#%
.
int i"
printf#$Lengt, 2o: wor+(\n$%"
Srinivas Institute of Technology Department of MC !age "&
System Software Lab
2010
for#iH>" i=1>>" i++%
if #leng([i > >%
printf#$%5+%1>+\n$EiEleng([i%"
return#1%"
/
K)i* &"o5"a# accu#u-ate* t)e )i*to5"a#, 0)i-e &"o1ucin5 no out&ut. At t)e en1 o' t)e in&ut it &"int*
t)e taG-e. K)e 'ina- *tate#ent "etu"n$1%; in1icate* t)at 7e. i* to &e"'o"# 0"a&u&. I' ,,0"a& "etu"n* ze"o
$'a-*e% it i#&-ie* t)at 'u"t)e" in&ut i* avai-aG-e an1 t)e &"o5"a# i* to continue "ea1in5 an1 &"oce**in5.
Ko &"ovi1e a ,,0"a& t)at neve" "etu"n* t"ue cau*e* an in'inite -oo&.
A* a -a"5e" e.a#&-e, )e"e a"e *o#e &a"t* o' a &"o5"a# 0"itten G, /. 7. Oc)",e" to conve"t 1ouG-e
&"eci*ion 6o"t"an to *in5-e &"eci*ion 6o"t"an. Vecau*e 6o"t"an 1oe* not 1i*tin5ui*) u&&e" an1 -o0e"
ca*e -ette"*, t)i* "outine Ge5in* G, 1e'inin5 a *et o' c-a**e* inc-u1in5 Got) ca*e* o' eac) -ette"9
& [&A
0 [0P
c [cF
:::
4 [4A
An a11itiona- c-a** "eco5nize* 0)ite *&ace9
Q [ \t;
K)e 'i"*t "u-e c)an5e* [[1ouG-e &"eci*ionII to [["ea-II, o" [[NOUV7E ?UE2IOIO/II to [[UEA7II.
.+/.o/.u/.0/.l/.e/.Q/.p/.r/.e/.c/.i/.(/.i/.o/.n/ .
printf#yytext[>HHI+I9 $re&l$ O $KDAL$%"
/
2a"e i* taHen t)"ou5)out t)i* &"o5"a# to &"e*e"ve t)e ca*e $u&&e" o" -o0e"% o' t)e o"i5ina- &"o5"a#.
K)e con1itiona- o&e"ato" i* u*e1 to *e-ect t)e &"o&e" 'o"# o' t)e He,0o"1. K)e ne.t "u-e co&ie*
continuation ca"1 in1ication* to avoi1 con'u*in5 t)e# 0it) con*tant*9
8$ $[8 > DFGO"
In t)e "e5u-a" e.&"e**ion, t)e \uote* *u""oun1 t)e G-anH*. It i* inte"&"ete1 a* [[Ge5innin5 o' -ine, t)en
'ive G-anH*, t)en an,t)in5 Gut G-anH o" ze"o.II /ote t)e t0o 1i''e"ent #eanin5* o' ^. K)e"e 'o--o0 *o#e
"u-e* to c)an5e 1ouG-e &"eci*ion con*tant* to o"1ina", '-oatin5 con*tant*.
[>-?+.Q/.+/.Q/[+-9.Q/[>-?+ |
[>-?+.Q/$:$.Q/.+/.Q/[+-9.Q/[>-?+ |
$:$.Q/[>-?+.Q/.+/.Q/[+-9.Q/[>-?+ .
<; convert con(t&nt( ;<
for#pHyytext" ;p RH >" p++%
.
if #;p HH I+I || ;p HH I7I%
;pH+ IeI- I+I"
DFGO"
/
A'te" t)e '-oatin5 &oint con*tant i* "eco5nize1, it i* *canne1 G, t)e 'o" -oo& to 'in1 t)e -ette" 1 o" N.
K)e &"o5"a# t)an a11* IeI-I1I, 0)ic) conve"t* it to t)e ne.t -ette" o' t)e a-&)aGet. K)e #o1i'ie1
con*tant, no0 *in5-e-&"eci*ion, i* 0"itten out a5ain. K)e"e 'o--o0 a *e"ie* o' na#e* 0)ic) #u*t Ge
"e*&e--e1 to "e#ove t)ei" initia- 1. V, u*in5 t)e a""a, ,,te.t t)e *a#e action *u''ice* 'o" a-- t)e na#e*
$on-, a *a#&-e o' a "at)e" -on5 -i*t i* 5iven )e"e%.
.+/.(/.i/.n/ |
.+/.c/.o/.(/ |
.+/.(/.J/.r/.t/ |
.+/.&/.t/.&/.n/ |
Srinivas Institute of Technology Department of MC !age "'
System Software Lab
2010
:::
.+/.f/.l/.o/.&/.t/ printf#$%($Eyytext+1%"
Anot)e" -i*t o' na#e* #u*t )ave initia- 1 c)an5e1 to initia- a9
.+/.l/.o/.g/ |
.+/.l/.o/.g/1> |
.+/.'/.i/.n/1 |
.+/.'/.&/.x/1 .
yytext[> H+ I&I - I+I"
DFGO"
/
An1 one "outine #u*t )ave initia- 1 c)an5e1 to initia- "9
.+/1.'/.&/.c/.,/ .yytext[> H+ IrI - I+I"
Ko avoi1 *uc) na#e* a* 1*in. Gein5 1etecte1 a* in*tance* o' 1*in, *o#e 'ina- "u-e* &icH u& -on5e"
0o"1* a* i1enti'ie"* an1 co&, *o#e *u"vivin5 c)a"acte"*9
[A-A&-4[A-A&-4>-?; |
[>-?+ |
\n |
: DFGO"
/ote t)at t)i* &"o5"a# i* not co#&-ete; it 1oe* not 1ea- 0it) t)e *&acin5 &"oG-e#* in 6o"t"an o" 0it)
t)e u*e o' He,0o"1* a* i1enti'ie"*.
10. 9eft *onte3t Sensitivit,.
Oo#eti#e* it i* 1e*i"aG-e to )ave *eve"a- *et* o' -e.ica- "u-e* to Ge a&&-ie1 at 1i''e"ent ti#e* in t)e
in&ut. 6o" e.a#&-e, a co#&i-e" &"e&"oce**o" #i5)t 1i*tin5ui*) &"e&"oce**o" *tate#ent* an1 ana-,ze
t)e# 1i''e"ent-, '"o# o"1ina", *tate#ent*. K)i* "e\ui"e* *en*itivit, to &"io" conte.t, an1 t)e"e a"e
*eve"a- 0a,* o' )an1-in5 *uc) &"oG-e#*. K)e ^ o&e"ato", 'o" e.a#&-e, i* a &"io" conte.t o&e"ato",
"eco5nizin5 i##e1iate-, &"ece1in5 -e't conte.t Su*t a* Y "eco5nize* i##e1iate-, 'o--o0in5 "i5)t
conte.t. A1Sacent -e't conte.t cou-1 Ge e.ten1e1, to &"o1uce a 'aci-it, *i#i-a" to t)at 'o" a1Sacent "i5)t
conte.t, Gut it i* un-iHe-, to Ge a* u*e'u-, *ince o'ten t)e "e-evant -e't conte.t a&&ea"e1 *o#e ti#e
ea"-ie", *uc) a* at t)e Ge5innin5 o' a -ine.
K)i* *ection 1e*c"iGe* t)"ee #ean* o' 1ea-in5 0it) 1i''e"ent envi"on#ent*9 a *i#&-e u*e o' '-a5*, 0)en
on-, a 'e0 "u-e* c)an5e '"o# one envi"on#ent to anot)e", t)e u*e o' *ta"t con1ition* on "u-e*, an1 t)e
&o**iGi-it, o' #aHin5 #u-ti&-e -e.ica- ana-,ze"* a-- "un to5et)e". In eac) ca*e, t)e"e a"e "u-e* 0)ic)
"eco5nize t)e nee1 to c)an5e t)e envi"on#ent in 0)ic) t)e 'o--o0in5 in&ut te.t i* ana-,ze1, an1 *et
*o#e &a"a#ete" to "e'-ect t)e c)an5e. K)i* #a, Ge a '-a5 e.&-icit-, te*te1 G, t)e u*e"I* action co1e;
*uc) a '-a5 i* t)e *i#&-e*t 0a, o' 1ea-in5 0it) t)e &"oG-e#, *ince 7e. i* not invo-ve1 at a--. It #a, Ge
#o"e convenient, )o0eve", to )ave 7e. "e#e#Ge" t)e '-a5* a* initia- con1ition* on t)e "u-e*. An, "u-e
#a, Ge a**ociate1 0it) a *ta"t con1ition. It 0i-- on-, Ge "eco5nize1 0)en 7e. i* in t)at *ta"t con1ition.
K)e cu""ent *ta"t con1ition #a, Ge c)an5e1 at an, ti#e. 6ina--,, i' t)e *et* o' "u-e* 'o" t)e 1i''e"ent
envi"on#ent* a"e ve", 1i**i#i-a", c-a"it, #a, Ge Ge*t ac)ieve1 G, 0"itin5 *eve"a- 1i*tinct -e.ica-
ana-,ze"*, an1 *0itc)in5 '"o# one to anot)e" a* 1e*i"e1.
2on*i1e" t)e 'o--o0in5 &"oG-e#9 co&, t)e in&ut to t)e out&ut, c)an5in5 t)e 0o"1 #a5ic to 'i"*t on
eve", -ine 0)ic) Ge5an 0it) t)e -ette" a, c)an5in5 #a5ic to *econ1 on eve", -ine 0)ic) Ge5an 0it) t)e
-ette" G, an1 c)an5in5 #a5ic to t)i"1 on eve", -ine 0)ic) Ge5an 0it) t)e -ette" c. A-- ot)e" 0o"1* an1
a-- ot)e" -ine* a"e -e't unc)an5e1.
Srinivas Institute of Technology Department of MC !age "(
System Software Lab
2010
K)e*e "u-e* a"e *o *i#&-e t)at t)e ea*ie*t 0a, to 1o t)i* SoG i* 0it) a '-a59
int fl&g"
%%
8& .fl&g H I&I" DFGO"/
80 .fl&g H I0I" DFGO"/
8c .fl&g H IcI" DFGO"/
\n .fl&g H > " DFGO"/
'&gic .
(witc, #fl&g%
.
c&(e I&IO printf#$fir(t$%" 0re&1"
c&(e I0IO printf#$(econ+$%" 0re&1"
c&(e IcIO printf#$t,ir+$%" 0re&1"
+ef&ultO DFGO" 0re&1"
/
/
*)ou-1 Ge a1e\uate.
Ko )an1-e t)e *a#e &"oG-e# 0it) *ta"t con1ition*, eac) *ta"t con1ition #u*t Ge int"o1uce1 to 7e. in
t)e 1e'inition* *ection 0it) a -ine "ea1in5
%St&rt n&'e1 n&'e- :::
0)e"e t)e con1ition* #a, Ge na#e1 in an, o"1e". K)e 0o"1 Ota"t #a, Ge aGG"eviate1 to * o" O. K)e
con1ition* #a, Ge "e'e"ence1 at t)e )ea1 o' a "u-e 0it) t)e Q+ G"acHet*9
=n&'e1>expre((ion
i* a "u-e 0)ic) i* on-, "eco5nize1 0)en 7e. i* in t)e *ta"t con1ition na#e1. Ko ente" a *ta"t con1ition,
e.ecute t)e action *tate#ent
PDSI2 n&'e1"
0)ic) c)an5e* t)e *ta"t con1ition to na#e1. Ko "e*u#e t)e no"#a- *tate,
PDSI2 >"
"e*et* t)e initia- con1ition o' t)e 7e. auto#aton inte"&"ete". A "u-e #a, Ge active in *eve"a- *ta"t
con1ition*9 Qna#e1,na#e4,na#e<+ i* a -e5a- &"e'i.. An, "u-e not Ge5innin5 0it) t)e Q+ &"e'i.
o&e"ato" i* a-0a,* active.
K)e *a#e e.a#&-e a* Ge'o"e can Ge 0"itten9
%S3AK3 AA PP FF
%%
8& .DFGO" PDSI2 AA"/
80 .DFGO" PDSI2 PP"/
8c .DFGO" PDSI2 FF"/
\n .DFGO" PDSI2 >"/
=AA>'&gic printf#$fir(t$%"
=PP>'&gic printf#$(econ+$%"
=FF>'&gic printf#$t,ir+$%"
0)e"e t)e -o5ic i* e.act-, t)e *a#e a* in t)e &"eviou* #et)o1 o' )an1-in5 t)e &"oG-e#, Gut 7e. 1oe*
t)e 0o"H "at)e" t)an t)e u*e"I* co1e.
11. *haracter Set.
K)e &"o5"a#* 5ene"ate1 G, 7e. )an1-e c)a"acte" IFO on-, t)"ou5) t)e "outine* in&ut, out&ut, an1
un&ut. K)u* t)e c)a"acte" "e&"e*entation &"ovi1e1 in t)e*e "outine* i* acce&te1 G, 7e. an1 e#&-o,e1 to
Srinivas Institute of Technology Department of MC !age #0
System Software Lab
2010
"etu"n va-ue* in ,,te.t. 6o" inte"na- u*e a c)a"acte" i* "e&"e*ente1 a* a *#a-- inte5e" 0)ic), i' t)e
*tan1a"1 -iG"a", i* u*e1, )a* a va-ue e\ua- to t)e inte5e" va-ue o' t)e Git &atte"n "e&"e*entin5 t)e
c)a"acte" on t)e )o*t co#&ute". /o"#a--,, t)e -ette" a i* "e&"e*ente1 a* t)e *a#e 'o"# a* t)e c)a"acte"
con*tant IaI. I' t)i* inte"&"etation i* c)an5e1, G, &"ovi1in5 IFO "outine* 0)ic) t"an*-ate t)e c)a"acte"*,
7e. #u*t Ge to-1 aGout it, G, 5ivin5 a t"an*-ation taG-e. K)i* taG-e #u*t Ge in t)e 1e'inition* *ection,
an1 #u*t Ge G"acHete1 G, -ine* containin5 on-, [[%KII. K)e taG-e contain* -ine* o' t)e 'o"#
.integer/ .c,&r&cter (tring/
0)ic) in1icate t)e va-ue a**ociate1 0it) eac) c)a"acte". K)u* t)e ne.t e.a#&-e
%3
1 A&
- P0
:::
-C A4
-6 \n
-T +
-? -
N> >
N1 1
:::
N? ?
%3
S&'ple c,&r&cter t&0le:
#a&* t)e -o0e" an1 u&&e" ca*e -ette"* to5et)e" into t)e inte5e"* 1 t)"ou5) 4C, ne0-ine into 4Z, + an1 -
into 4_ an1 4>, an1 t)e 1i5it* into <0 t)"ou5) <>. /ote t)e e*ca&e 'o" ne0-ine. I' a taG-e i* *u&&-ie1,
eve", c)a"acte" t)at i* to a&&ea" eit)e" in t)e "u-e* o" in an, va-i1 in&ut #u*t Ge inc-u1e1 in t)e taG-e.
/o c)a"acte" #a, Ge a**i5ne1 t)e nu#Ge" 0, an1 no c)a"acte" #a, Ge a**i5ne1 a Gi55e" nu#Ge" t)an
t)e *ize o' t)e )a"10a"e c)a"acte" *et.
1&. Summar, of Source 8ormat.
K)e 5ene"a- 'o"# o' a 7e. *ou"ce 'i-e i*9
.+efinition(/
%%
.rule(/
%%
.u(er (u0routine(/
K)e 1e'inition* *ection contain* a co#Gination o'
1% Ne'inition*, in t)e 'o"# [[na#e *&ace t"an*-ationII.
4% Inc-u1e1 co1e, in t)e 'o"# [[*&ace co1eII.
<% Inc-u1e1 co1e, in t)e 'o"#
%.
co+e
%/
;% Ota"t con1ition*, 5iven in t)e 'o"#
%S n&'e1 n&'e- :::
D% 2)a"acte" *et taG-e*, in t)e 'o"#
Srinivas Institute of Technology Department of MC !age #1
System Software Lab
2010
%3
nu'0er (p&ce c,&r&cter-(tring
:::
%3
C% 2)an5e* to inte"na- a""a, *ize*, in t)e 'o"#
%x nnn
0)e"e nnn i* a 1eci#a- inte5e" "e&"e*entin5 an a""a, *ize an1 . *e-ect* t)e &a"a#ete" a* 'o--o0*9
Letter *&r&'eter
p po(ition(
n (t&te(
e tree no+e(
& tr&n(ition(
1 p&c1e+ c,&r&cter cl&((e(
o output &rr&y (i4e
7ine* in t)e "u-e* *ection )ave t)e 'o"# [[e.&"e**ion actionII 0)e"e t)e action #a, Ge continue1 on
*uccee1in5 -ine* G, u*in5 G"ace* to 1e-i#it it.
Ue5u-a" e.&"e**ion* in 7e. u*e t)e 'o--o0in5 o&e"ato"*9
x t,e c,&r&cter $x$
$x$ &n $x$E even if x i( &n oper&tor:
\x &n $x$E even if x i( &n oper&tor:
[xy t,e c,&r&cter x or y:
[x-4 t,e c,&r&cter( xE y or 4:
[8x &ny c,&r&cter 0ut x:
: &ny c,&r&cter 0ut newline:
8x &n x &t t,e 0eginning of & line:
=y>x &n x w,en Lex i( in (t&rt con+ition y:
x! &n x &t t,e en+ of & line:
x9 &n option&l x:
x; >E1E-E ::: in(t&nce( of x:
x+ 1E-ENE ::: in(t&nce( of x:
x|y &n x or & y:
#x% &n x:
x<y &n x 0ut only if followe+ 0y y:
.xx/ t,e tr&n(l&tion of xx fro' t,e
+efinition( (ection:
x.'En/ ' t,roug, n occurrence( of x
1(. *aveats and ;ugs.
K)e"e a"e &at)o-o5ica- e.&"e**ion* 0)ic) &"o1uce e.&onentia- 5"o0t) o' t)e taG-e* 0)en conve"te1 to
1ete"#ini*tic #ac)ine*; 'o"tunate-,, t)e, a"e "a"e.
UE3E2K 1oe* not "e*can t)e in&ut; in*tea1 it "e#e#Ge"* t)e "e*u-t* o' t)e &"eviou* *can. K)i* #ean*
t)at i' a "u-e 0it) t"ai-in5 conte.t i* 'oun1, an1 UE3E2K e.ecute1, t)e u*e" #u*t not )ave u*e1 un&ut
to c)an5e t)e c)a"acte"* 'o"t)co#in5 '"o# t)e in&ut *t"ea#. K)i* i* t)e on-, "e*t"iction on t)e u*e"I*
aGi-it, to #ani&u-ate t)e not-,et-&"oce**e1 in&ut.
14. +cAnowledgments.
Srinivas Institute of Technology Department of MC !age #2
System Software Lab
2010
A* *)ou-1 Ge oGviou* '"o# t)e aGove, t)e out*i1e o' 7e. i* &atte"ne1 on Bacc an1 t)e in*i1e on A)oI*
*t"in5 #atc)in5 "outine*. K)e"e'o"e, Got) O. 2. 3o)n*on an1 A. R. A)o a"e "ea--, o"i5inato"* o' #uc) o'
7e., a* 0e-- a* 1eGu55e"* o' it. :an, t)anH* a"e 1ue to Got).
K)e co1e o' t)e cu""ent ve"*ion o' 7e. 0a* 1e*i5ne1, 0"itten, an1 1eGu55e1 G, E"ic Oc)#i1t.
1!. 0eferences.
1. V. L. `e"ni5)an an1 N. :. Uitc)ie, K)e 2 ?"o5"a##in5 7an5ua5e, ?"entice-Wa--, /. 3. $1>Z_%.
4. V. L. `e"ni5)an, Uat'o"9 A ?"e&"oce**o" 'o" a Uationa- 6o"t"an, Oo't0a"e ?"actice an1 E.&e"ience,
D, &&. <>D-;>C $1>ZD%.
<. O. 2. 3o)n*on, Bacc9 Bet Anot)e" 2o#&i-e" 2o#&i-e", 2o#&utin5 Ocience Kec)nica- Ue&o"t /o. <4,
1>ZD, Ve-- 7aGo"ato"ie*, :u""a, Wi--, /3 0Z>Z;.
;. A. R. A)o an1 :. 3. 2o"a*icH, E''icient Ot"in5 :atc)in59 An Ai1 to ViG-io5"a&)ic Oea"c), 2o##.
A2: 1_, <<<-<;0 $1>ZD%.
D. V. L. `e"ni5)an, N. :. Uitc)ie an1 `. 7. K)o#&*on, ]EN Ke.t E1ito", 2o#&utin5 Ocience
Kec)nica- Ue&o"t /o. D, 1>Z4, Ve-- 7aGo"ato"ie*, :u""a, Wi--, /3 0Z>Z;.
C. N. :. Uitc)ie, &"ivate co##unication. Oee a-*o :. E. 7e*H, K)e ?o"taG-e 2 7iG"a",, 2o#&utin5
Ocience Kec)nica- Ue&o"t /o. <1, Ve-- 7aGo"ato"ie*, :u""a, Wi--, /3 0Z>Z;.
Srinivas Institute of Technology Department of MC !age #"

Das könnte Ihnen auch gefallen