def parser(input): """ docstring """ grammar.parse(input) lexerErrors = grammar.returnLexicalErrors() syntaxErrors = grammar.returnSyntacticErrors() obj = { "lexical": lexerErrors, "syntax": syntaxErrors, } astReport() BnfGrammar.grammarReport() return obj
def selectFirstValue(input): """ Funcion para obtener el primer valor de un select """ result = grammar.parse(input) if len(result) > 1: result[0].execute(None) type_ = result[1].params[0].temp result = result[1].execute(None) df = result[0] types = result[1] if df.empty: if types[type_] == TYPE.STRING: return "" elif types[type_] == TYPE.NUMBER: return 0 if types[type_] == TYPE.BOOLEAN: return "False" return "" if isinstance(df, pd.core.series.Series): df = df.iloc[0] else: df = df.iloc[0].iloc[0] else: df = result[0].execute(None)[0].iloc[0].iloc[0] return df
def analize(self): entrada = self.txtEntrada.get("1.0", END) # variable de almacenamiento de la entrada result = grammar.parse(entrada) self.lexicalErrors = grammar.returnLexicalErrors() self.sintacticErrors = grammar.returnSintacticErrors() self.semanticErrors = grammar.returnSemanticErrors() self.postgreSQL = grammar.returnPostgreSQLErrors() if len(self.lexicalErrors) + len(self.sintacticErrors) + len(self.semanticErrors) > 0: tkinter.messagebox.showerror( title="Error", message="El archivo contiene errores" )
def selectFirstValue(input): """ Funcion para obtener el primer valor de un select """ result = grammar.parse(input) if len(result) > 1: result = result[0].execute(None) result = result[1].execute(None)[0].iloc[0].iloc[0] else: result = result[0].execute(None)[0].iloc[0].iloc[0] return result
def analize(self): self.tabla.pack_forget() self.tabla_scroll.pack_forget() self.tabla_scrollX.pack_forget() entrada = self.txtEntrada.get( "1.0", END) # variable de almacenamiento de la entrada result = grammar.parse(entrada) self.lexicalErrors = grammar.returnLexicalErrors() self.sintacticErrors = grammar.returnSintacticErrors() if len(self.lexicalErrors) + len(self.sintacticErrors) > 0: tkinter.messagebox.showerror(title="Error", message="El archivo contiene errores")
def execution(input): """ docstring """ querys = [] messages = [] result = grammar.parse(input) lexerErrors = grammar.returnLexicalErrors() syntaxErrors = grammar.returnSyntacticErrors() if len(lexerErrors) + len(syntaxErrors) == 0 and result: for v in result: if isinstance(v, Select): r = v.execute(None) if r: list_ = r[0].values.tolist() labels = r[0].columns.tolist() querys.append([labels, list_]) messages.append("Select ejecutado con exito.") else: querys.append(None) messages.append("Error: Select.") print(r) else: r = v.execute(None) print(r) messages.append(r) semanticErrors = grammar.returnSemanticErrors() PostgresErrors = grammar.returnPostgreSQLErrors() symbols = symbolReport() obj = { "messages": messages, "querys": querys, "lexical": lexerErrors, "syntax": syntaxErrors, "semantic": semanticErrors, "postgres": PostgresErrors, "symbols": symbols, } astReport() #BnfGrammar.grammarReport() try: if len(querys) == 1: if len(querys[0][1]) == 1: if len(querys[0][1][0]) == 1: return querys[0][1][0][0] except: return obj return obj
def execution(input): """ docstring """ querys = [] messages = [] result = grammar.parse(input) with open("obj.pickle", "wb") as f: pickle.dump(result, f) lexerErrors = grammar.returnLexicalErrors() syntaxErrors = grammar.returnSyntacticErrors() if len(lexerErrors) + len(syntaxErrors) == 0 and result: for v in result: if isinstance(v, inst.Select) or isinstance( v, inst.SelectOnlyParams): r = v.execute(None) if r: list_ = r[0].values.tolist() labels = r[0].columns.tolist() querys.append([labels, list_]) else: querys.append(None) else: r = v.execute(None) messages.append(r) semanticErrors = grammar.returnSemanticErrors() PostgresErrors = grammar.returnPostgreSQLErrors() symbols = symbolReport() obj = { "messages": messages, "querys": querys, "lexical": lexerErrors, "syntax": syntaxErrors, "semantic": semanticErrors, "postgres": PostgresErrors, "symbols": symbols, } astReport() BnfGrammar.grammarReport() return obj
def getc3d(input): """ docstring """ querys = [] messages = [] result = grammar.parse(input) lexerErrors = grammar.returnLexicalErrors() syntaxErrors = grammar.returnSyntacticErrors() tabla = Environment() if len(lexerErrors) + len(syntaxErrors) == 0 and result: for v in result: if isinstance(v, inst.Select) or isinstance( v, inst.SelectOnlyParams): r = v.c3d(tabla) if r: list_ = r[0].values.tolist() labels = r[0].columns.tolist() querys.append([labels, list_]) else: querys.append(None) else: r = v.c3d(tabla) messages.append(r) semanticErrors = grammar.returnSemanticErrors() PostgresErrors = grammar.returnPostgreSQLErrors() symbols = symbolReport() obj = { "messages": messages, "querys": querys, "lexical": lexerErrors, "syntax": syntaxErrors, "semantic": semanticErrors, "postgres": PostgresErrors, "symbols": symbols, "codigo": tabla.codigo, } astReport() BnfGrammar.grammarReport() return obj
from sys import path from os.path import dirname as dir from shutil import rmtree path.append(dir(path[0])) from analizer import grammar dropAll = 0 if dropAll: print("Eliminando registros") rmtree("data") s = """ --USE test; --SELECT rol from tbrol; DELETE from tab1 where col1 = 3; INSERT INTO tab1 VALUES(1,2); UPDATE tab1 set col1 = 3 where 1 < 2; """ result = grammar.parse(s) print(result) #print(result[0].execute(None)) #print(result[1].execute(None)) # print(grammar.returnPostgreSQLErrors())