Advertisement
DakshJain

C program to classify lexemes

Feb 11th, 2025
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.43 KB | Source Code | 0 0
  1. #include<stdio.h>
  2.  
  3. char lex[1000];
  4. int n = 0;
  5. int classify(char c){
  6.     if(c == '\0') return 0;
  7.     if(('a' <= c &&  c <= 'z') || ('A' <= c && c <= 'Z')) return 1;
  8.     if('0' <= c && c <= '9') return 2;
  9.     if(c == '+' || c == '-' || c == '*' || c == '/' || c == '%') return 3;
  10.     if(c == '&' || c == '|' || c == '^') return 4;
  11.     if(c == '>' || c == '<' || c == '!') return 5;
  12.     if(c == '=') return 6;
  13.     if(c == ';') return 7;
  14.     if(c == '.') return 8;
  15.     if(c == ',') return 9;
  16.     if(c == '"') return 10;
  17. }
  18.  
  19.  
  20. void helper(){
  21.     printf("Entered String : %s\n", lex);
  22.     // int n = sizeof(lex);
  23.     int first = classify(lex[0]);
  24.     if(first == 10){
  25.         printf("String %s is identified\n", lex);
  26.     }else if(n == 1){
  27.         if(first == 1){
  28.             printf("Identifier %s is identified\n", lex);
  29.         }else if(first == 2){
  30.             printf("Number %s is identified\n", lex);
  31.         }else if(first == 3){
  32.             printf("Arithmetic Operator %s is identified\n", lex);
  33.         }else if(first == 4){
  34.             printf("Bitwise Operator %s is identified\n", lex);
  35.         }else if(first == 6){
  36.             printf("Assignment Operator %s is identified\n", lex);
  37.         }else if(first == 7){
  38.             printf("Semicolon %s is identified\n", lex);
  39.         }else if(first == 8){
  40.             printf("Dot Operator %s is identified\n", lex);
  41.         }else if(first == 9){
  42.             printf("Comma , separator is identified\n");
  43.         }
  44.         return;
  45.     }
  46.     if(lex[0] == 'p'){
  47.         int x = classify(lex[1]);
  48.         if(lex[1] == 'u'){
  49.             if(lex[2] == 'b'){
  50.                 if(lex[3] == 'l'){
  51.                     if(lex[4] == 'i'){
  52.                         if(lex[5] == 'c'){
  53.                             printf("Access Specifier : %s is identified\n");
  54.                         }else{
  55.                             printf("Identifier %s is identified\n", lex);
  56.                         }
  57.                     }else{
  58.                         printf("Identifier %s is identified\n", lex);
  59.                     }
  60.                 }else{
  61.                     printf("Identifier %s is identified\n", lex);
  62.                 }
  63.             }else{
  64.                 printf("Identifier %s is identified\n", lex);
  65.             }
  66.             return;
  67.         }
  68.         if(lex[1] == 'r'){
  69.             if(lex[2] == 'o'){
  70.                 if(lex[3] == 't'){
  71.                     if(lex[4] == 'e'){
  72.                         if(lex[5] == 'c'){
  73.                             if(lex[6] == 't'){
  74.                                 if(lex[7] == 'e'){
  75.                                     if(lex[8] == 'd' && lex[9] == '\0'){
  76.                                         printf("Access Specifier : %s is identified\n");
  77.                                     }else{
  78.                                         printf("Identifier %s is identified\n", lex);
  79.                                     }
  80.                                 }else{
  81.                                     printf("Identifier %s is identified\n", lex);
  82.                                 }
  83.                             }else{
  84.                                 printf("Identifier %s is identified\n", lex);
  85.                             }
  86.                         }else{
  87.                             printf("Identifier %s is identified\n", lex);
  88.                         }
  89.                     }else{
  90.                         printf("Identifier %s is identified\n", lex);
  91.                     }
  92.                 }else{
  93.                     printf("Identifier %s is identified\n", lex);
  94.                 }
  95.             }else{
  96.                 printf("Identifier %s is identified\n", lex);
  97.             }
  98.         }else if(x == 2){
  99.             printf("Identifier %s is identified\n", lex);
  100.         }
  101.         return;
  102.     }
  103.     if(lex[0] == 's'){
  104.         if(lex[1] == 't'){
  105.             if(lex[2] == 'a'){
  106.                 if(lex[3] == 't'){
  107.                     if(lex[4] == 'i'){
  108.                         if(lex[5] == 'c' && lex[6] == '\0'){
  109.  
  110.                         }else{
  111.                             printf("Identifier %s is identified\n", lex);
  112.                         }
  113.                     }else{
  114.                         printf("Identifier %s is identified\n", lex);
  115.                     }
  116.                 }else{
  117.                     printf("Identifier %s is identified\n", lex);
  118.                 }
  119.             }else{
  120.                 printf("Identifier %s is identified\n", lex);
  121.             }
  122.         }else{
  123.             printf("Identifier %s is identified\n", lex);
  124.         }
  125.         return;
  126.     }
  127.     if(lex[0] == 'c'){
  128.         if(lex[1] == 'l'){
  129.             if(lex[2] == 'a'){
  130.                 if(lex[3] == 's'){
  131.                     if(lex[4] == 's' && lex[5] == '\0'){
  132.                         printf("Keyword %s is identified\n", lex);
  133.                     }else{
  134.                         printf("Identifier %s is identified\n", lex);
  135.                     }
  136.                 }else{
  137.                     printf("Identifier %s is identified\n", lex);
  138.                 }
  139.             }else{
  140.                 printf("Identifier %s is identified\n", lex);
  141.             }
  142.         }else if(lex[1] == 'h'){
  143.             if(lex[2] == 'a'){
  144.                 if(lex[3] == 'r' && lex[4] == '\0'){
  145.                     printf("Primitive datatype %s is identified\n", lex);
  146.                 }else{
  147.                     printf("Identifier %s is identified\n", lex);
  148.                 }
  149.             }else{
  150.                 printf("Identifier %s is identified\n", lex);
  151.             }
  152.         }else{
  153.             printf("Identifier %s is identified\n", lex);
  154.         }
  155.         return;
  156.     }
  157.     if(lex[0] == 'i'){
  158.         if(lex[1] == 'f' && lex[2] == '\0'){
  159.             printf("Conditional %s statement is identified\n", lex);
  160.         }else if(lex[1] == 'n'){
  161.             if(lex[2] == 't' && n == 3){
  162.                 printf("Primitive datatype %s is identified\n", lex);
  163.             }else{
  164.                 printf("Identifier %s is identified\n", lex);
  165.             }
  166.         }else{
  167.             printf("Identifier %s is identified\n", lex);
  168.         }
  169.     }
  170.     if(lex[0] == 'd'){
  171.         if(lex[1] == 'o'){
  172.             if(n == 2){
  173.                 printf("Loop construct %s is identified\n", lex);
  174.                 return;
  175.             }
  176.             if(lex[2] == 'u'){
  177.                 if(lex[3] == 'b'){
  178.                     if(lex[4] == 'l'){
  179.                         if(lex[5] == 'e' && lex[6] == '\0'){
  180.                             printf("Primitive datatype %s is identified\n", lex);
  181.                         }else{
  182.                             printf("Identifier %s is identified\n", lex);
  183.                         }
  184.                     }else{
  185.                         printf("Identifier %s is identified\n", lex);
  186.                     }
  187.                 }else{
  188.                     printf("Identifier %s is identified\n", lex);
  189.                 }
  190.             }else{
  191.                 printf("Identifier %s is identified\n", lex);
  192.             }
  193.         }else{
  194.             printf("Identifier %s is identified\n", lex);
  195.         }
  196.         return;
  197.     }
  198.    
  199.    
  200.     if(first == 2){
  201.         int idx = 0;
  202.         int t = 1;
  203.         while(lex[idx] != '\0') if(classify(lex[idx++]) != 2){ t = 0; break;}
  204.         if(t){
  205.             printf("Number %s is identified\n", lex);
  206.         }else{
  207.             if(idx > 0 && idx < n && lex[idx-1] == '.'){
  208.                 t = 1;
  209.                 while(lex[idx] != '\0') if(classify(lex[idx++]) != 2){ t = 0; break;}
  210.                 if(t){
  211.                     printf("Floating point number is identified\n");
  212.                 }else{
  213.                     if(idx > 0 && idx < n && lex[idx-1] == 'e'){
  214.                         t = 1;
  215.                         while(lex[idx] != '\0') if(classify(lex[idx++]) != 2){ t = 0; break;}
  216.                         if(t){
  217.                             printf("Scientific notation\n");
  218.                         }else{
  219.                             printf("Cannot determine this\n");
  220.                         }
  221.                     }else{
  222.                         printf("Cannot determine this\n");
  223.                     }
  224.                 }
  225.             }else{
  226.                 printf("Cannot determine this %s\n", lex);
  227.             }
  228.         }
  229.     }
  230. }
  231.  
  232. int main(){
  233.     while(1){
  234.         int i = 0;
  235.         char c ;
  236.         while((c = getchar()) != '\n'){
  237.             lex[i++] = c;
  238.         }
  239.         lex[i] = '\0';
  240.         n = i;
  241.         helper();
  242.     }
  243.     return 0;
  244. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement