Exemplo n.º 1
0
def ExpresionNumero(c):
    global valor, fila, columna, flagExpressionNumero, cont, flagExpressionDecimal

    if esnumero(c):
        columna += 1
        valor += c
        return
    elif ord(c) == 46:
        valor += c
        flagExpressionDecimal = True
        flagExpressionNumero = False
        return
    elif ord(c) == 59:
        columna += 1
        tablasimbolos.append(
            Simbolo("Numero", valor + ".00", fila, (columna - 1 - len(valor))))
        columna += 1
        tablasimbolos.append(Simbolo("punto_y_coma", ";", fila, (columna - 2)))
        valor = ""
        flagExpressionNumero = False
    elif ord(c) == 32:
        columna += 1
        tablasimbolos.append(
            Simbolo("Numero", valor + ".00", fila, (columna - 1 - len(valor))))
        valor = ""
        flagExpressionNumero = False
    else:
        Error(c, "Error Lexico | caracter no valido", fila, columna)
Exemplo n.º 2
0
def ExpresionDecimal(c, val):
    global valor, fila, columna, cont, flagExpressionDecimal
    conta = cont
    if esnumero(c) & (cont <= 2):
        val += c
        cont = cont + 1
        valor = val
        return
    elif (cont > 0) & (cont <= 2) & (ord(c) == 32):
        columna += 1
        tablasimbolos.append(
            Simbolo("Numero", valor, fila, (columna - 1 - len(valor))))
        valor = ""
        cont = 0
        flagExpressionDecimal = False
    elif (cont > 0) & (cont <= 2) & (ord(c) == 59):
        columna += 1
        tablasimbolos.append(
            Simbolo("Numero", valor, fila, (columna - 1 - len(valor))))
        columna += 1
        tablasimbolos.append(Simbolo("punto_y_coma", ";", fila, (columna - 2)))
        valor = ""
        flagExpressionDecimal = False
        cont = 0
    else:
        val += c
        Error(valor, "Se espera un numero con formato ##.##", fila, columna)
        flagExpressionDecimal = False
        cont = 0
        return
Exemplo n.º 3
0
def ExpresionNumero(c):
    global valor, fila, columna, flagExpressionNumero
    h = ord(c)
    if esnumero(c) | (ord(c) == 46):
        columna += 1
        valor += c
        return
    if ord(c) == 44:
        columna += 1
        tablasOrden.append(
            Simbolo("Numero", valor, fila, (columna - 1 - len(valor))))
        columna += 1
        tablasOrden.append(Simbolo("coma", ",", fila, (columna - 2)))
        valor = ""
        flagExpressionNumero = False
    elif ord(c) == 10:
        columna += 1
        tablasOrden.append(
            Simbolo("Numero", valor, fila, (columna - 1 - len(valor))))
        valor = ""
        flagExpressionNumero = False
    elif ord(c) == 32:
        columna += 1
        tablasOrden.append(
            Simbolo("Numero", valor, fila, (columna - 1 - len(valor))))
        valor = ""
        flagExpressionNumero = False
    elif ord(c) == 37:
        columna += 1
        tablasOrden.append(
            Simbolo("Propina", valor, fila, (columna - 1 - len(valor))))
        valor = ""
        flagExpressionNumero = False
    else:
        Error(c, "", fila, columna)
Exemplo n.º 4
0
def analizador(c):
    if CondicionesOrden.flagExpressionId:
        CondicionesOrden.ExpresionId(c)
    elif CondicionesOrden.flagExpressionCadena:
        CondicionesOrden.ExpresionCadena(c)
    elif CondicionesOrden.flagExpressionNumero:
        CondicionesOrden.ExpresionNumero(c)
    elif CondicionesOrden.esletra(c) == True:
        CondicionesOrden.columna += 1
        CondicionesOrden.valor = c
        CondicionesOrden.flagExpressionId = True
    elif CondicionesOrden.esnumero(c) == True:
        CondicionesOrden.columna += 1
        CondicionesOrden.valor = c
        CondicionesOrden.flagExpressionNumero = True
    elif ord(c) == 39:  #'
        CondicionesOrden.flagExpressionCadena = True
        CondicionesOrden.columna += 1
    elif ord(c) == 44:  #,
        CondicionesOrden.columna += 1
        CondicionesOrden.valor = c
        CondicionesOrden.tablasOrden.append(
            Simbolo("coma", ",", CondicionesOrden.fila,
                    (CondicionesOrden.columna - 2)))
        CondicionesOrden.valor = ""
    elif ord(c) == 10:  #Salto de Linea
        CondicionesOrden.fila += 1
        CondicionesOrden.columna = 0
        CondicionesOrden.valor = ""
    elif ord(c) == 32:  #espacio
        CondicionesOrden.columna += 1
        CondicionesOrden.valor = ""
    else:
        CondicionesOrden.Error(c, "", CondicionesOrden.fila,
                               CondicionesOrden.columna)
Exemplo n.º 5
0
def ExpresionCadena(c):
    global valor, fila, columna, flagExpressionCadena

    if ord(c) == 39:
        columna += 1
        tablasimbolos.append(
            Simbolo("Cadena", valor, fila, (columna - 1 - len(valor))))
        valor = ""
        flagExpressionCadena = False
        return
    columna += 1
    valor += c
Exemplo n.º 6
0
def ExpresionId(c):
    global valor, columna, fila, flagExpressionId
    if esletra(c) or esnumero(c) or ord(c) == 95 or ord(c) == 45:
        valor += c
        columna += 1
        return
    elif ord(c) == 32:
        valor += c
        columna += 1
        tablasOrden.append(
            Simbolo("ID", valor, fila, (columna - 1 - len(valor))))
        valor = ""
        flagExpressionId = False
    elif ord(c) == 10:
        tablasOrden.append(Simbolo("ID", valor, fila, (columna - len(valor))))
        fila += 1
        columna += 1
        valor = ""
        flagExpressionId = False
    else:
        Error(c, "", fila, columna)
Exemplo n.º 7
0
def ExpresionId(c):
    global valor, columna, fila, flagExpressionId
    if esletra(c) or esnumero(c) or ord(c) == 95:
        valor += c
        columna += 1
        return
    elif ord(c) == 32:
        columna += 1
        tablasimbolos.append(
            Simbolo("ID", valor, fila, (columna - 1 - len(valor))))
        valor = ""
        flagExpressionId = False
    elif ord(c) == 61:
        tablasimbolos.append(Simbolo("ID", valor, fila,
                                     (columna - len(valor))))
        columna += 1
        tablasimbolos.append(Simbolo("Simbolo_igual", "=", fila,
                                     (columna - 2)))
        valor = ""
        flagExpressionId = False
    elif ord(c) == 59:
        tablasimbolos.append(Simbolo("ID", valor, fila,
                                     (columna - len(valor))))
        columna += 1
        tablasimbolos.append(Simbolo("punto_y_coma", ";", fila, (columna - 2)))
        valor = ""
        flagExpressionId = False
    elif ord(c) == 10:
        tablasimbolos.append(Simbolo("ID", valor, fila,
                                     (columna - len(valor))))
        fila += 1
        columna += 1
        valor = ""
        flagExpressionId = False
    else:
        Error(
            c,
            "Error Lexico | expresion no valida, tiene un caracter no valido",
            fila, columna)
Exemplo n.º 8
0
def analizador(c):
    if Condiciones.flagExpressionId:
        Condiciones.ExpresionId(c)
    elif Condiciones.flagExpressionCadena:
        Condiciones.ExpresionCadena(c)
    elif Condiciones.flagExpressionNumero:
        Condiciones.ExpresionNumero(c)
    elif Condiciones.flagExpressionDecimal:
        Condiciones.ExpresionDecimal(c, Condiciones.valor)
    elif Condiciones.esletra(c) == True:
        Condiciones.columna += 1
        Condiciones.valor = c
        Condiciones.flagExpressionId = True
    elif Condiciones.esnumero(c) == True:
        Condiciones.columna += 1
        Condiciones.valor = c
        Condiciones.flagExpressionNumero = True
    elif ord(c) == 61:  #=
        Condiciones.columna += 1
        Condiciones.valor = c
        Condiciones.tablasimbolos.append(
            Simbolo("Simbolo_igual", "=", Condiciones.fila,
                    (Condiciones.columna - 2)))
        Condiciones.valor = c
    elif ord(c) == 39:  #'
        Condiciones.flagExpressionCadena = True
        Condiciones.columna += 1
    elif ord(c) == 91:  #[
        Condiciones.columna += 1
        Condiciones.valor = c
        Condiciones.tablasimbolos.append(
            Simbolo("simbolo_llave_abre", "[", Condiciones.fila,
                    (Condiciones.columna - 2)))
        Condiciones.valor = ""
    elif ord(c) == 93:  #]
        Condiciones.columna += 1
        Condiciones.valor = c
        Condiciones.tablasimbolos.append(
            Simbolo("simbolo_llave_cierra", "]", Condiciones.fila,
                    (Condiciones.columna - 2)))
        Condiciones.valor = ""
    elif ord(c) == 59:  #;
        Condiciones.columna += 1
        Condiciones.valor = c
        Condiciones.tablasimbolos.append(
            Simbolo("punto_y_coma", ";", Condiciones.fila,
                    (Condiciones.columna - 2)))
        Condiciones.valor = ""
    elif ord(c) == 58:  #:
        Condiciones.columna += 1
        Condiciones.valor = c
        Condiciones.tablasimbolos.append(
            Simbolo("Dos_puntos", ":", Condiciones.fila,
                    (Condiciones.columna - 2)))
        Condiciones.valor = ""
    elif ord(c) == 10:  #Salto de Linea
        Condiciones.fila += 1
        Condiciones.columna = 0
        Condiciones.valor = ""
    elif ord(c) == 32:  #espacio
        Condiciones.columna += 1
        Condiciones.valor = ""
    else:
        Condiciones.Error(c, "", Condiciones.fila, Condiciones.columna)
Exemplo n.º 9
0
def Error(simbolo, expectativa, fila, columna):
    tablaErrores.append(Simbolo(simbolo, expectativa, fila, columna))