Exemplo n.º 1
0
def parser(input):
    """
    docstring
    """
    grammar.parse(input)
    lexerErrors = grammar.returnLexicalErrors()
    syntaxErrors = grammar.returnSyntacticErrors()
    obj = {
        "lexical": lexerErrors,
        "syntax": syntaxErrors,
    }
    astReport()
    BnfGrammar.grammarReport()
    return obj
Exemplo n.º 2
0
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
Exemplo n.º 3
0
 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" )
Exemplo n.º 4
0
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
Exemplo n.º 5
0
 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")
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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())