#include <stdio.h> #include <string.h> int main() { char input[100]; int state = 0; printf("Enter a binary number: "); scanf("%s", input); int len = strlen(input); for (int i = 0; i < len; i++) { char symbol = input[i]; if (symbol != '0' && symbol != '1') { printf("Invalid input! Only binary digits allowed.\n"); return 1; } if (symbol == '0') state = 1; else state = 2; } if (state == 1) printf("Accepted: Even binary number.\n"); else printf("Rejected: Not an even binary number.\n"); return 0; }
#include <stdio.h> #include <string.h> int main() { char input[100]; int state = 0; printf("Enter a binary number: "); scanf("%s", input); int len = strlen(input); for (int i = 0; i < len; i++) { char symbol = input[i]; if (symbol != '0' && symbol != '1') { printf("Invalid input! Only binary digits allowed.\n"); return 1; } if (symbol == '0') state = 1; else state = 2; } if (state == 2) printf("Accepted: Odd binary number.\n"); else printf("Rejected: Not an odd binary number.\n"); return 0; }
#include <stdio.h> #include <string.h> int main() { char input[100]; int state = 0; printf("Enter a binary number: "); scanf("%s", input); int len = strlen(input); for (int i = 0; i < len; i++) { char symbol = input[i]; if (symbol != '0' && symbol != '1') { printf("Invalid input! Only binary digits allowed.\n"); return 1; } switch(state) { case 0: state = (symbol == '0') ? 0 : 1; break; case 1: state = (symbol == '0') ? 2 : 3; break; case 2: state = (symbol == '0') ? 4 : 0; break; case 3: state = (symbol == '0') ? 1 : 2; break; case 4: state = (symbol == '0') ? 3 : 4; break; } } if (state == 0) printf("Accepted: Binary number divisible by 5.\n"); else printf("Rejected: Not divisible by 5.\n"); return 0; }
#include <stdio.h> #include <string.h> int main() { char input[100]; int state = 0; printf("Enter a binary number: "); scanf("%s", input); int len = strlen(input); for (int i = 0; i < len; i++) { char symbol = input[i]; if (symbol != '0' && symbol != '1') { printf("Invalid input! Only binary digits allowed.\n"); return 1; } switch(state) { case 0: state = (symbol == '0') ? 0 : 1; break; case 1: state = (symbol == '0') ? 2 : 0; break; case 2: state = (symbol == '0') ? 1 : 2; break; } } if (state == 0) printf("Accepted: Binary number divisible by 3.\n"); else printf("Rejected: Not divisible by 3.\n"); return 0; }
#include <stdio.h> #include <string.h> int main() { char input[100]; int state = 0; printf("Enter a binary string: "); scanf("%s", input); int len = strlen(input); for (int i = 0; i < len; i++) { char symbol = input[i]; if (symbol != '0' && symbol != '1') { printf("Invalid input! Only binary digits allowed.\n"); return 1; } switch(state) { case 0: state = (symbol == '0') ? 1 : 2; break; case 1: state = (symbol == '0') ? 3 : 2; break; case 2: state = (symbol == '0') ? 1 : 2; break; case 3: state = (symbol == '0') ? 3 : 2; break; } } if (state == 3) printf("Accepted: String ends with '00'.\n"); else printf("Rejected: String does not end with '00'.\n"); return 0; }
#include <stdio.h> #include <string.h> int main() { char input[100]; int state = 0; printf("Enter a binary string: "); scanf("%s", input); int len = strlen(input); for (int i = 0; i < len; i++) { char symbol = input[i]; if (symbol != '0' && symbol != '1') { printf("Invalid input! Only binary digits allowed.\n"); return 1; } switch(state) { case 0: state = (symbol == '0') ? 2 : 1; break; case 1: state = (symbol == '0') ? 2 : 3; break; case 2: state = (symbol == '0') ? 2 : 1; break; case 3: state = (symbol == '0') ? 2 : 3; break; } } if (state == 3) printf("Accepted: String ends with '11'.\n"); else printf("Rejected: String does not end with '11'.\n"); return 0; }
#include <stdio.h> #include <string.h> #include <ctype.h> char keywords[10][10] = {"int", "if", "else", "while", "return", "float", "char", "for", "do", "void"}; int isKeyword(char *word) { for (int i = 0; i < 10; i++) { if (strcmp(word, keywords[i]) == 0) return 1; } return 0; } int main() { char input[100]; char token[100]; int i = 0, j = 0; printf("Enter a line of code: "); fgets(input, sizeof(input), stdin); while (input[i] != '\0') { if (isalnum(input[i])) { token[j++] = input[i]; } else { if (j != 0) { token[j] = '\0'; j = 0; if (isKeyword(token)) printf("[Keyword: %s]\n", token); else if (isdigit(token[0])) printf("[Number: %s]\n", token); else printf("[Identifier: %s]\n", token); } if (input[i] == ' ' || input[i] == '\n') { // skip } else if (ispunct(input[i])) { printf("[Symbol: %c]\n", input[i]); } } i++; } return 0; }
#include <stdio.h> #define MAX 10 int main() { int i, nNT, nT; char NT[MAX], T[MAX], prod[MAX][MAX], first[MAX]; printf("Number of non-terminals: "); scanf("%d", &nNT); printf("Non-terminals:\n"); for (i = 0; i < nNT; i++) scanf(" %c", &NT[i]); printf("Number of terminals: "); scanf("%d", &nT); printf("Terminals:\n"); for (i = 0; i < nT; i++) scanf(" %c", &T[i]); printf("Enter production for each non-terminal:\n"); for (i = 0; i < nNT; i++) { printf("%c → ", NT[i]); scanf("%s", prod[i]); } for (i = 0; i < nNT; i++) first[i] = prod[i][1]; printf("\nFirst Sets:\n"); for (i = 0; i < nNT; i++) printf("First(%c) = { %c }\n", NT[i], first[i]); return 0; }
#include <stdio.h> #include <ctype.h> void main() { char str[50]; int i, flag = 1; printf("Enter the string: "); scanf("%s", str); if (!(isalpha(str[0]) || str[0] == '_')) { flag = 0; } else { for (i = 1; str[i] != '\0'; i++) { if (!(isalnum(str[i]) || str[i] == '_')) { flag = 0; break; } } } if (flag) printf("Identifier\n"); else printf("Not Identifier\n"); }
#include <stdio.h> #include <string.h> int main() { char keywords[5][10] = {"printf", "scanf", "if", "else", "break"}; char str[10]; int i, flag = 0; printf("Enter the string: "); scanf("%s", str); for (i = 0; i < 5; i++) { if (strcmp(str, keywords[i]) == 0) { flag = 1; break; } } if (flag) printf("Keyword\n"); else printf("String\n"); return 0; }
#include <stdio.h> int main() { char nt, p1[20], p2[20]; int i; printf("Enter non-terminal: "); scanf(" %c", &nt); printf("Enter first production: "); scanf("%s", p1); printf("Enter second production: "); scanf("%s", p2); if (p1[0] == nt) { printf("\nLeft recursion exists!\n"); printf("After removing left recursion:\n"); printf("%c -> %s%c'\n", nt, p2, nt); printf("%c' -> ", nt); for (i = 1; p1[i]; i++) printf("%c", p1[i]); printf("%c' | ε\n", nt); } else if (p2[0] == nt) { printf("\nLeft recursion exists!\n"); printf("After removing left recursion:\n"); printf("%c -> %s%c'\n", nt, p1, nt); printf("%c' -> ", nt); for (i = 1; p2[i]; i++) printf("%c", p2[i]); printf("%c' | ε\n", nt); } else { printf("\nNo left recursion.\n"); printf("Grammar remains same: %c -> %s | %s\n", nt, p1, p2); } return 0; }
#include <stdio.h> #include <ctype.h> #include <string.h> int main() { char expr[100], tok[100]; int i = 0, j = 0; printf("Enter expression: "); fgets(expr, sizeof(expr), stdin); while (expr[i] != '\0') { if (isdigit(expr[i])) { tok[j++] = '6'; while (isdigit(expr[i])) i++; i--; } else if (expr[i] == '+' || expr[i] == '-') tok[j++] = '2'; else if (expr[i] == '*') tok[j++] = '3'; else if (expr[i] == '(') tok[j++] = '4'; else if (expr[i] == ')') tok[j++] = '5'; i++; } tok[j] = '\0'; printf("\nTokenized: %s\n", tok); int changed; do { changed = 0; for (i = 0; tok[i + 2]; i++) { if ((tok[i] == '6' && (tok[i+1] == '2' || tok[i+1] == '3') && tok[i+2] == '6') || (tok[i] == '4' && tok[i+1] == '6' && tok[i+2] == '5')) { tok[i] = '6'; strcpy(&tok[i + 1], &tok[i + 3]); printf("Reduced: %s\n", tok); changed = 1; break; } } } while (changed); if (strcmp(tok, "6") == 0) printf("\n✅ Valid Expression\n"); else printf("\n❌ Invalid Expression\n"); return 0; }