cyberpunk7925

Untitled

May 7th, 2023
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.78 KB | None | 0 0
  1. DFA
  2. #include <stdio.h>
  3. #include <string.h>
  4. int main()
  5. {
  6.     char a[10];
  7.     printf("As the expression has to end with 01 as a substring it has 3 states 0,1,2\n");
  8.     printf("Enter the expression to be checked:\n");
  9.     scanf("%[^\n]s",a);
  10.     printf("%s\n",a);
  11.     int state = 0;
  12.     for (int i=0; i<strlen(a);i++){
  13.         if(state==0 && a[i]=='1'){
  14.             state = 0;
  15.         }
  16.         else if(state==0 && a[i]=='0'){
  17.             state = 1;
  18.         }
  19.         else if(state==1 && a[i]=='0'){
  20.             state=1;
  21.         }
  22.         else if(state==1 && a[i]=='1'){
  23.             state = 2;
  24.         }
  25.         else if(state==2 && a[i]=='0'){
  26.             state = 1;
  27.         }
  28.         else if(state==2 && a[i]=='1'){
  29.             state = 1;
  30.         }
  31.        
  32.     }
  33.     if(state==2){
  34.         printf("The expression is accepted as it reached the final state 2");
  35.     }
  36.     else{
  37.         printf("The expression is rejected as it didn't reach the final state, it is in state %d",state);
  38.     }
  39.     return 0;
  40. }
  41.  
  42. NFA
  43.  
  44. #include <stdio.h>
  45. #include <string.h>
  46.  
  47. int main()
  48. {
  49.     char a[10];
  50.     printf("Enter the input string:\n");
  51.     scanf("%[^\n]s",a);
  52.     int state = 0;
  53.     int i = 0;
  54.     int len = strlen(a);
  55.  
  56.     while(i < len){
  57.         if(state == 0 && a[i] == '0'){
  58.             state = 0;
  59.         }
  60.         else if(state == 0 && a[i] == '1'){
  61.             state = 1;
  62.         }
  63.         else if(state == 1 && a[i] == '0'){
  64.             state = 1;
  65.         }
  66.         else if(state == 1 && a[i] == '1'){
  67.             state = 2;
  68.         }
  69.         else if(state == 2 && a[i] == '0'){
  70.             state = 0;
  71.         }
  72.         else if(state == 2 && a[i] == '1'){
  73.             state = 2;
  74.         }
  75.  
  76.         i++;
  77.     }
  78.  
  79.     if(state == 2){
  80.         printf("The input string is accepted as it reached the final state 2.and ending with 11\n");
  81.     }
  82.     else{
  83.         printf("The input string is rejected as it didn't reach the final state, it is in state %d.\n", state);
  84.     }
  85.  
  86.     return 0;
  87. }
  88.  
  89. FIRST
  90. #include <stdio.h>
  91. #include <string.h>
  92. #include <ctype.h>
  93.  
  94. int num_nt;
  95. char nt[10];
  96. int p[10];
  97. char productions[10][10][10];
  98.  
  99. void find_first(char non_t) {
  100.     for (int i = 0; i < num_nt; i++) {
  101.         if (nt[i] == non_t) {
  102.             for (int j = 0; j < p[i]; j++) {
  103.                 char first = productions[i][j][0];
  104.                 if (isupper(first)) {
  105.                     find_first(first);
  106.                 } else {
  107.                     printf("%c ", first);
  108.                 }
  109.             }
  110.         }
  111.     }
  112. }
  113.  
  114. int main() {
  115.     printf("Enter number of non-terminals:\n");
  116.     scanf("%d", &num_nt);
  117.     printf("Enter non-terminals:\n");
  118.     for (int i = 0; i < num_nt; i++) {
  119.         scanf(" %c", &nt[i]);
  120.     }
  121.  
  122.     for (int i = 0; i < num_nt; i++) {
  123.         printf("Enter the number of productions for %c: ", nt[i]);
  124.         scanf("%d", &p[i]);
  125.         printf("Enter the productions for %c:\n", nt[i]);
  126.         for (int j = 0; j < p[i]; j++) {
  127.             scanf("%s", productions[i][j]);
  128.             printf("\n");
  129.         }
  130.     }
  131.  
  132.     for (int i = 0; i < num_nt; i++) {
  133.         printf("First ( %c ): ", nt[i]);
  134.         find_first(nt[i]);
  135.         printf("\n");
  136.     }
  137.     return 0;
  138. }
  139.  
  140. SYMBOL TABLE
  141. #include<stdio.h>
  142. #include<ctype.h>
  143. #include<stdlib.h>
  144. #include<string.h>
  145. #include<math.h> void
  146. main()
  147. {
  148. int i=0,j=0,x=0,n; void *p,*add[5];
  149. char ch,srch,b[15],d[15],c;
  150. printf("Expression terminated by $:");
  151. while((c=getchar())!='$')
  152. {
  153. b[i]=c;
  154. i++;
  155. }
  156. n=i-1;
  157. printf("\nGiven Expression:");
  158. i=0;
  159. while(i<=n)
  160. {
  161. printf("%c",b[i]);
  162. i++;
  163. }
  164. printf("\n\nSymbol Table\n\n");
  165. printf("Symbol \t addr \t\t type");
  166. while(j<=n)
  167. {
  168. c=b[j];
  169. if(isalpha(toascii(c)))
  170. {
  171. p=malloc(c);
  172. add[x]=p; d[x]=c;
  173. printf("\n%c \t %d \t identifier\n",c,p);
  174. x++; j++;
  175. }
  176. else
  177. {
  178. ch=c;
  179. if(ch=='+'||ch=='-'||ch=='*'||ch=='=')
  180. {
  181. p=malloc(ch);
  182. add[x]=p; d[x]=ch;
  183. printf("\n%c \t %d \t operator\n",ch,p);
  184. x++; j++;
  185. }
  186. }
  187. }
  188. }
  189.  
  190. PDA
  191. #include<stdio.h>
  192. #include<string.h>
  193. int top;
  194. char s[10];
  195. void push(int x)
  196. {
  197.   s[top++]=x;
  198. }
  199. void pop()
  200. {
  201.   top--;
  202. }
  203. int main()
  204. {
  205.   int i,n,state=0;
  206.   char a[10];
  207.   printf("Program For PDA Which Accpets Strings Of (a^n)(b^n)\n");
  208.   printf("Enter String:");
  209.   gets(a);
  210.   n=strlen(a);
  211.   top=-1;
  212.   for(i=0;i<n;i++)
  213.   {
  214.     if(a[i]=='a' && state==0)
  215.     {
  216.       push(a[i]);
  217.       state=0;
  218.     }
  219.     else if(a[i]=='b' && state==0)
  220.     {
  221.       pop(a[i]);
  222.       state=1;
  223.     }
  224.     else if(a[i]=='b' && state==1)
  225.     {
  226.       pop();
  227.       state=1;
  228.     }
  229.     else
  230.     {
  231.       break;
  232.     }
  233.   }
  234.   if(a[i]=='\0' && top==-1 && state==1)
  235.     state=100;
  236.   if(state==100)
  237.     printf("String Accepted.");
  238.   else
  239.     printf("String Rejected.");
  240.   return 0;
  241. }
Add Comment
Please, Sign In to add comment