Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

MAULANA AZAD

NATIONAL INSTITUTE OF TECHNOLOGY


BHOPAL – 462 003 (INDIA)
2021

Compiler design LAB ASSIGNMENT


CSE – 315
LAB - 1 : 02/08/2021

By –

SANDEEP RAGHUVANSHI

Scholar no. – 191112441

Semester – 5

CSE 3 

1. (a+b)*abb C CODE FOR THIS DFA :


Creating NFA and DFA : /* This code is for checking whether the string
entred belongs to (a+b)*abb or not . */

#include <stdio.h>
#include <string.h>
enum state
{
A,
B,
C,
D
};
int start = A;

enum state a(char x)


{
if (x == 'a')
return B;
return A;
}
enum state b(char x)
{
if (x == 'a')
return B;
return C;
}
enum state c (char x)
{
if (x == 'a')
return B;
return D;
}
enum state d (char x)
{
if (x == 'a')
return B;
return A;
}

int main()
{
char input[100];
printf("enter the string ");
scanf("%s", &input);
int len = strlen(input);
int i = 0;
for (i; i < len; i++)
{
if (input[i] != 'a' && input[i] != 'b')
{
OUTPUT WINDOW : printf("String %s is not part of language ", input);
break;
}
else
{
if (start == A)
start = a(input[i]);
else if (start == B)
start = b(input[i]);
else if (start == C)
start = c(input[i]);
else if (start == D)
start = d(input[i]);
}
}
if (i == len)
{
if (start == D)
printf("String %s is accepted ", input);
else
printf("String %s is not accepted ");
}
return 0 ;
}
2. ( a + b ) * bb ( a + b )* : C CODE FOR THIS DFA :
/* This code is for checking wheathr the string entred
belongs to (a+b)*bb(a+b)* or not . */

#include <stdio.h>
#include <string.h>

enum state
{
A,
B,
C,
D
};
int start = A;

enum state a(char x)


{
if (x == 'a')
return A;
return B;
}
enum state b(char x)
{
if (x == 'a')
return A;
return C;
}
enum state c (char x)
{
if (x == 'a')
return D;
return C;
}
enum state d (char x)
{
if (x == 'a')
return D;
return C;
}

int main()
{
char input[100];
printf("enter the string ");
OUTPUT SCREEN FOR THE CODE : scanf("%s", &input);
int len = strlen(input);
int i = 0;
for (i; i < len; i++)
{
if (input[i] != 'a' && input[i] != 'b')
{
printf("String %s is not part of language ", input);
break;
}
else
{
if (start == A)
start = a(input[i]);
else if (start == B)
start = b(input[i]);
else if (start == C)
start = c(input[i]);
else if (start == D)
start = d(input[i]);
}
}
if (i == len)
{
if (start == C || start == D )
printf("String %s is accepted ", input);
else
printf("String %s is not accepted ");
}
return 0 ;
}
3. ( a + b ) a ( a + b ) C CODE FOR THIS DFA :
/* This code is for checking weather the
string entred belongs to (a+b)*a(a+b) or
not . */

#include <stdio.h>
#include <string.h>

enum state
{
A,
B,
C,
D
};
int start = A;

enum state a(char x)


{
if (x == 'a')
return B;
return A;
}
enum state b(char x)
{
if (x == 'a')
return C;
return D;
}
enum state c (char x)
{
if (x == 'a')
return C;
return D;
}
enum state d (char x)
{
if (x == 'a')
return B;
return A;
}

int main()
{
char input[100];
printf("enter the string ");
OUPUT FOR THIS DFA IS : scanf("%s", &input);
int len = strlen(input);
int i = 0;
for (i; i < len; i++)
{
if (input[i] != 'a' && input[i] != 'b')
{
printf("String %s is not part of
language ", input);
break;
}
else
{
if (start == A)
start = a(input[i]);
else if (start == B)
start = b(input[i]);
else if (start == C)
start = c(input[i]);
else if (start == D)
start = d(input[i]);
}
}
if (i == len)
{
if (start == C || start == D)
printf("String %s is accepted ",
input);
else
printf("String %s is not accepted ");
}
return 0 ;
}

You might also like