Example #1
0
 def spec_stupac(self):
     stupac = AST(stablo='stupac')
     stupac.ime = self.pročitaj(SQL.IME)
     stupac.tip = self.pročitaj(SQL.IME)
     sljedeći = self.granaj(SQL.ZAREZ, SQL.OTVORENA, SQL.ZATVORENA)
     if sljedeći == SQL.OTVORENA:
         self.pročitaj(SQL.OTVORENA)
         stupac.veličina = self.pročitaj(SQL.BROJ)
         self.pročitaj(SQL.ZATVORENA)
         sljedeći = self.granaj(SQL.ZAREZ, SQL.ZATVORENA)
     if sljedeći == SQL.ZAREZ:
         self.pročitaj(SQL.ZAREZ)
     return stupac
Example #2
0
 def create(self):
     self.pročitaj(SQL.CREATE)
     self.pročitaj(SQL.TABLE)
     naredba = AST(stablo='naredba', vrsta=SQL.CREATE)
     naredba.tablica = self.pročitaj(SQL.IME)
     naredba.stupci = []
     self.pročitaj(SQL.OTVORENA)
     while True:
         stupac = self.spec_stupac()
         naredba.stupci.append(stupac)
         if self.granaj(SQL.ZATVORENA, SQL.IME) == SQL.ZATVORENA: break
     self.pročitaj(SQL.ZATVORENA)
     return naredba
Example #3
0
 def izraz(self):
     č1 = self.član()
     dalje = self.granaj(Ar.KRAJ, Ar.PLUS, Ar.MINUS, Ar.ZATVORENA)
     if dalje == Ar.PLUS:
         self.pročitaj(Ar.PLUS)
         č2 = self.izraz()
         return AST(stablo='zbroj', lijevo=č2, desno=č1)
     elif dalje == Ar.MINUS:
         self.pročitaj(Ar.MINUS)
         č2 = self.izraz()
         return AST(stablo='razlika', lijevo=č2, desno=č1)
     else:
         return č1
Example #4
0
 def potenciranje(self):
     f1 = self.faktor()
     dalje = self.granaj(Ar.KRAJ, Ar.POTENCIJA, Ar.PUTA, Ar.PLUS, Ar.MINUS,
                         Ar.ZATVORENA, Ar.OTVORENA, Ar.BROJ)
     if dalje == Ar.POTENCIJA:
         self.pročitaj(Ar.POTENCIJA)
         f2 = self.potenciranje()
         return AST(stablo='potenciranje', lijevo=f2, desno=f1)
     elif dalje == Ar.BROJ:
         f2 = self.potenciranje()
         return AST(stablo='umnožak', lijevo=f2, desno=f1)
     elif dalje == Ar.OTVORENA:
         f2 = self.potenciranje()
         return AST(stablo='umnožak', lijevo=f2, desno=f1)
     else:
         return f1
Example #5
0
 def select(self):
     naredba = AST(stablo='naredba', vrsta=SQL.SELECT)
     self.pročitaj(SQL.SELECT)
     što = self.granaj(SQL.ZVJEZDICA, SQL.IME)
     if što == SQL.ZVJEZDICA:
         self.pročitaj(SQL.ZVJEZDICA)
         naredba.sve = True
     elif što == SQL.IME:
         naredba.stupci = []
         while True:
             stupac = self.pročitaj(SQL.IME)
             naredba.stupci.append(stupac)
             if self.granaj(SQL.ZAREZ, SQL.FROM) == SQL.FROM: break
             self.pročitaj(SQL.ZAREZ)
     self.pročitaj(SQL.FROM)
     naredba.tablica = self.pročitaj(SQL.IME)
     return naredba
Example #6
0
 def član(self):
     f1 = self.faktor()
     dalje = self.granaj(Ar.KRAJ, Ar.PUTA, Ar.PLUS, Ar.MINUS, Ar.ZATVORENA)
     if dalje == Ar.PUTA:
         self.pročitaj(Ar.PUTA)
         f2 = self.član()
         return AST(stablo='umnožak', lijevo=f2, desno=f1)
     else:
         return f1
Example #7
0
 def formula(self):
     fo = AST(stablo='formula')
     početak = self.granaj(LS.NEG, LS.PVAR, LS.OTV)
     if početak == LS.PVAR:
         fo.varijabla = self.pročitaj(LS.PVAR)
     elif početak == LS.NEG:
         fo.veznik = self.pročitaj(LS.NEG)
         fo.negirana = self.formula()
     elif početak == LS.OTV:
         self.pročitaj(LS.OTV)
         fo.lijeva = self.formula()
         fo.veznik = self.pročitaj(LS.KON, LS.DIS, LS.KOND, LS.BIKOND)
         fo.desna = self.formula()
         self.pročitaj(LS.ZATV)
     return fo