fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct symbolinfo{
  5. string name;
  6. string type;
  7. };
  8.  
  9. class symboltable{
  10. vector<symbolinfo>vec[10];
  11. public:
  12.  
  13.  
  14. int hashfunction(string name)
  15.  
  16. {
  17. int sum=0;
  18. int len=name.length();
  19. for(int i=0;i<len;i++)
  20. {
  21. sum+=name[i] ;
  22.  
  23. }
  24. return sum%10;
  25. }
  26.  
  27.  
  28. void insertt (string name,string type){
  29. symbolinfo*ob=new symbolinfo();
  30. ob->name=name;
  31. ob->type=type;
  32.  
  33. int hashval=hashfunction(name);
  34. vector<symbolinfo>v=vec[hashval];
  35. int flag=0;
  36. for(auto find =v.begin();find!=v.end();++find)
  37. {
  38. if (find->name==name&&find->type==type)
  39. {
  40. flag=1;
  41. break;
  42.  
  43. }
  44. }
  45.  
  46. if(flag==1)
  47. {
  48.  
  49. cout<<"already inserted"<<endl;
  50.  
  51. }
  52. else{
  53.  
  54. vec[hashval].push_back(*ob) ;
  55. cout<<"Symbol inserted"<<endl;
  56.  
  57. }
  58.  
  59. }
  60.  
  61. int lookup(string name)
  62. {
  63.  
  64.  
  65. }
  66. void deletee(string name,string type)
  67. {
  68.  
  69.  
  70. }
  71. };
  72.  
  73.  
  74.  
  75. int main()
  76. {
  77. symboltable s;
  78. s.insertt("int","keyword") ;
  79. s.insertt("a","id");
  80. s.insertt("a","id");
  81.  
  82. }
  83.  
  84.  
  85.  
  86.  
  87.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
Symbol inserted
Symbol inserted
already inserted