Advertisement
ortem_kats

salibek_lab6

Feb 29th, 2020
2,535
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //ifVar1>Var2thenVar1=5endif
  2.  
  3. //ifVar2<14thenVar3=3+22endif
  4.  
  5. //ifVar>Var0thenVar0=Var2elseVar0=Var1endif
  6.  
  7. //ifVar1<Var2thenVar2=Var1+Var2elseVar2=Var1+13endif
  8.  
  9.  
  10.  
  11. #include <iostream>
  12. #include <string>
  13.  
  14. using namespace std;
  15.  
  16. bool FSM(char ch, int &S)
  17. {
  18.     switch(S) {
  19.         case 0:
  20.             if(ch=='i') {S=1; return false;}
  21.             S=-1; return true;
  22.         case 1:
  23.             if(ch=='f') {S=2; return false;}
  24.             S=-1; return true;
  25.         case 2:
  26.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z') {S=3; return false;}
  27.             S=-1; return true;
  28.         case 3:
  29.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=3; return false;}
  30.             if(ch=='<' || ch=='>') {S=4; return false;}
  31.             S=-1; return true;
  32.         case 4:
  33.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z') {S=5; return false;}
  34.             if(ch>='0' && ch<='9') {S=6; return false;}
  35.             S=-1; return true;
  36.         case 5:
  37.             if (ch=='t') {S=7; return false;}
  38.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=5; return false;}
  39.             S=-1; return true;
  40.         case 6:
  41.             if(ch>='0' && ch<='9') {S=6; return false;}
  42.             if (ch=='t') {S=7; return false;}
  43.             S=-1; return true;
  44.         case 7:
  45.             if (ch=='h') {S=8; return false;}
  46.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=5; return false;}
  47.             S=-1; return true;
  48.         case 8:
  49.             if (ch=='e') {S=9; return false;}
  50.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=5; return false;}
  51.             S=-1; return true;
  52.         case 9:
  53.             if (ch=='n') {S=10; return false;}
  54.             S=-1; return true;
  55.         case 10:
  56.             if(ch>='A' && ch<='Z') {S=11; return false;}
  57.             S=-1; return true;
  58.         case 11:
  59.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=11; return false;}
  60.             if (ch=='=') {S=12; return false;}
  61.             S=-1; return true;
  62.         case 12:
  63.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z') {S=13; return false;}
  64.             if(ch>='0' && ch<='9') {S=14; return false;}
  65.             S=-1; return true;
  66.         case 13:
  67.             if (ch=='e') {S=18; return false;}
  68.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=13; return false;}
  69.             if (ch=='+' || ch=='-') {S=15; return false;}
  70.             S=-1; return true;
  71.         case 14:
  72.             if(ch>='0' && ch<='9') {S=14; return false;}
  73.             if (ch=='+' || ch=='-') {S=15; return false;}
  74.             if (ch=='e') S=18; return false;
  75.             S=-1; return true;
  76.         case 15:
  77.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z') {S=16; return false;}
  78.             if(ch>='0' && ch<='9') {S=17; return false;}
  79.             S=-1; return true;
  80.         case 16:
  81.             if (ch=='e') {S=18; return false;}
  82.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=16; return false;}
  83.             S=-1; return true;
  84.         case 17:
  85.             if(ch>='0' && ch<='9') {S=17; return false;}
  86.             if (ch=='e') {S=18; return false;}
  87.             S=-1; return true;
  88.         case 18:
  89.             if (ch=='l') {S=19; return false;}
  90.             if (ch=='n') S=30; return false;
  91.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=16; return false;}
  92.             S=-1; return true;
  93.         case 19:
  94.             if (ch=='s') {S=20; return false;}
  95.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=16; return false;}
  96.             S=-1; return true;
  97.         case 20:
  98.             if (ch=='e') {S=21; return false;}
  99.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=16; return false;}
  100.             S=-1; return true;
  101.         case 21:
  102.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z') {S=22; return false;}
  103.             S=-1; return true;
  104.         case 22:
  105.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=22; return false;}
  106.             if (ch=='=') {S=23; return false;}
  107.             S=-1; return true;
  108.         case 23:
  109.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z') {S=24; return false;}
  110.             if(ch>='0' && ch<='9') {S=25; return false;}
  111.             S=-1; return true;
  112.         case 24:
  113.             if (ch=='e') {S=29; return false;}
  114.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=24; return false;}
  115.             if (ch=='+' || ch=='-') {S=26; return false;}
  116.             S=-1; return true;
  117.         case 25:
  118.             if (ch=='e') {S=29; return false;}
  119.             if(ch>='0' && ch<='9') {S=25; return false;}
  120.             if (ch=='+' || ch=='-') {S=26; return false;}
  121.             S=-1; return true;
  122.         case 26:
  123.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z') {S=27; return false;}
  124.             if(ch>='0' && ch<='9') {S=28; return false;}
  125.             S=-1; return true;
  126.         case 27:
  127.             if (ch=='e') {S=29; return false;}
  128.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=27; return false;}
  129.             S=-1; return true;
  130.         case 28:
  131.             if(ch>='0' && ch<='9') {S=28; return false;}
  132.             if (ch=='e') {S=29; return false;}
  133.             S=-1; return true;
  134.         case 29:
  135.             if(ch=='n') {S=30; return false;}
  136.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=27; return false;}
  137.             S=-1; return true;
  138.         case 30:
  139.             if(ch=='d') {S=31; return false;}
  140.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=27; return false;}
  141.             S=-1; return true;
  142.         case 31:
  143.             if(ch=='i') {S=32; return false;}
  144.             if(ch>='A' && ch<='Z' || ch>='a' && ch<='z' || ch>='0' && ch<='9') {S=27; return false;}
  145.             S=-1; return true;
  146.         case 32:
  147.             if(ch=='f') {S=33; return false;}
  148.             S=-1; return true;
  149.         case 33:
  150.             break;
  151.     }
  152.    
  153. }
  154.  
  155. int main() {
  156.     int S=0;
  157.     string str;
  158.     int finalState = 33;
  159.     bool check = false;
  160.     while(getline(cin, str), str != "") {
  161.         if(!check)
  162.             check=true;
  163.         else
  164.             FSM('\n',S);
  165.         for(auto i: str)
  166.             if(FSM(i,S)) break;
  167.        
  168.     }
  169.     cout << S << endl;
  170.     if(finalState == S)
  171.         cout<<"Yes";
  172.     else
  173.         cout<<"No";
  174.        
  175.     return 0;
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement