Laboratorium 7: tablica symboli

Tablica nazw

Zaprojektuj i zaimplementuj swoją tablicę nazw - strukturę danych dostarczającą operacji

  • insert - wstawienie nazwy
  • find - wyszukanie nazwy

W testowaniu moze pomóc poniższy kod:

void test() {
  NameTab nameTab;
  int identifiers = 0;
  while(yylex()) {
     identifiers ++;
     if(!nameTab.insert(yytext,yyleng)) 
       abort("FATAL: Pool memory exhausted");
  }   
  cout << "Identifier lexems: " << identifiers << endl;
  cout << "Repeats: " << nameTab.repeated << endl;

Lexer: https://gist.github.com/706400

[ben@students Nametab]$ find /usr/include -name \*.h | xargs cat | /usr/bin/time ./pooled
Identifier lexems: 3679282
Repeats: 3265862
2.94user 0.13system 0:03.11elapsed 98%CPU (0avgtext+0avgdata 67104maxresident)k
0inputs+0outputs (0major+4257minor)pagefaults 0swaps

Kalkulator ze zmiennymi

Rozszerz kalkulator o zmienne i przypisania, np

x = 2*2
y = x+1
y*y
25