Compiler File 2
Compiler File 2
Problem Statement 9:
Implementation of DFA accepting even number of a and b over input {a, b} with dead state.
Source code:
%s A B C F
%%
<INITIAL>\n printf(" accepted\n");BEGIN INITIAL;
<INITIAL>a BEGIN A;
<INITIAL>b BEGIN B;
<A>a BEGIN INITIAL;
<A>b BEGIN C;
<A>\n BEGIN INITIAL; printf(" not accepted\n");
<B>a BEGIN C;
<B>b BEGIN INITIAL;
<B>\n BEGIN INITIAL; printf(" not accepted\n");
<C>a BEGIN B;
<C>b BEGIN A;
<C>\n BEGIN INITIAL; printf(" not accepted\n");
<A>[^ab\n] BEGIN F;
<B>[^ab\n] BEGIN F;
<C>[^ab\n] BEGIN F;
<INITIAL>[^ab\n] BEGIN F;
<F>[^\n] BEGIN F;
<F>[\n] BEGIN INITIAL;printf("Invalid Input\n");
.;
%%
int main(){ printf("Enter the String of a and b only:\n");
yylex();
}
int yywrap(){
return 1;
}
Output:
int yywrap(){
return 1;
}
Output:
Source code:
%{
#include<stdio.h>
%}
%S A B C D
%%
<INITIAL>[\n] BEGIN INITIAL;
<INITIAL>[0-9]+ BEGIN A;
<INITIAL>[0-9]*[.][0-9]+ BEGIN B;
<INITIAL>[a-zA-Z_][a-zA-Z0-9_]* BEGIN C;
<INITIAL>[^\n] BEGIN D;
<A>\n BEGIN INITIAL;printf("VALID INTEGER\n");
<A>[^\n] BEGIN D;
<B>\n BEGIN INITIAL;printf("VALID FLOAT\n");
<B>[^\n] BEGIN D;
<C>\n BEGIN INITIAL;printf("VALID IDENTIFIER\n");
<C>[^\n] BEGIN D;
<D>\n BEGIN INITIAL; printf("INVALID INPUT\n");
<D>[^\n] BEGIN D;
%%
void main(){
printf("Enter the string: ");
yylex();
}
int yywrap(){
return 1;
}
Output: