def getcuerposubbloque(t): g = '<cuerposub> : BEGIN <listasubbloque> END PTCOMA' childs = [Nodo('BEGIN', '', [], t.lexer.lineno)] if t[2] != None: childs.append(Nodo('LISTA', '', t[2], t.lexer.lineno)) childs.append(Nodo('END', '', [], t.lexer.lineno)) return Nodo('CUERPO', '', childs, t.lexer.lineno, 0, g)
def getcuerpo(t): g = '<cuerpo> : BEGIN <instrlistabloque> END PTCOMA' childs = [] if t[2] != None: childs.append(Nodo('LISTA', '', t[2], t.lexer.lineno)) childs.append(Nodo('END', '', [], t.lexer.lineno)) return Nodo('BEGIN', '', childs, t.lexer.lineno, 0, g)
def getraisenoticesubbloque(t): if len(t) == 5: return Nodo('RAISE NOTICE', t[3], [], t.lexer.lineno) elif len(t) == 7: n1 = Nodo('ID', t[5], [], t.lexer.lineno) return Nodo('RAISE NOTICE', t[3], [n1], t.lexer.lineno) else: n1 = Nodo('OUTERBLOCK', t[7], [], t.lexer.lineno) return Nodo('RAISE NOTICE', t[3], [n1], t.lexer.lineno)
def getasignavalor(t): if t[1] == None: return None elif t[1] == '=': g = '<asignavalor> : DEFAULT <expresion>' return Nodo('IGUAL', '=', [t[2]], t.lexer.lineno, 0, g) elif t[1] == ':=': g = '<asignavalor> : DEFAULT <expresion>' return Nodo('PTIGUAL', ':=', [t[2]], t.lexer.lineno, 0, g) else: return Nodo('DEFAULT', '', [t[2]], t.lexer.lineno)
def getfuncion_procedimiento(t): g = '<plsql_instr> : CREATE <procedfunct> ID PARIZQ <parametrosfunc> PARDER <tiporetorno> <cuerpofuncion>' g += '\n<procedfunct> : PROCEDURE' childs = [] if t[5] != None: childs.append(Nodo('PARAMETROS', '', t[5], t.lexer.lineno)) if t[7] != None: childs.append(t[7]) if t[8] != None: childs.append(t[8]) return Nodo(t[2], t[3], childs, t.lexer.lineno, 0, g)
def getinstrexecute(t): childs = [t[3]] if t[5] != None: childs.append(t[5]) if t[6] != None: childs.append(t[6]) return Nodo('EXECUTE', '', childs, t.lexer.lineno)