コード例 #1
0
                    self.flujo.devuelve(l)
                    return componentes.real(l)
                else:
                    self.flujo.devuelve(l)
                    raise errores.ErrorLexico("Cadena no terminada.")

    def muestraError(self, f):
        cad = self.flujo.cadena()
        if cad[-1] == "\n":
            cad = cad[:-1]
        f.write("%s\n%s%s\n" % (cad, " " * self.poserror, "^" *
                                (self.flujo.posleida() - self.poserror + 1)))


if __name__ == "__main__":
    linea = sys.stdin.readline()
    while linea:
        fl = flujo.Flujo(linea)
        lexico = Lexico(fl)

        while 1:
            try:
                c = lexico.siguiente()
                print c
                if c.cat == "eof":
                    break
            except errores.Error, err:
                sys.stderr.write("%s\n" % err)
                lexico.muestraError(sys.stderr)
        linea = sys.stdin.readline()
コード例 #2
0
  elif ch== "\n":
   #incrementa el numero de linea ya que acabamos de saltar a otra
   # devolver el siguiente componente encontrado


############################################################################
#
#  Funcion: __main__
#  Tarea:  Programa principal de prueba del analizador lexico
#  Prametros:  --
#  Devuelve: --
#
############################################################################
if __name__=="__main__":
    script, filename=argv
    txt=open(filename)
    print "Este es tu fichero %r" % filename
    i=0
    fl = flujo.Flujo(txt)
    analex=Analex(fl)
    try:
      c=analex.Analiza()
      while c :
       print c
       c=analex.Analiza()
      i=i+1
    except errores.Error, err:
     sys.stderr.write("%s\n" % err)
     analex.muestraError(sys.stderr)

コード例 #3
0
ファイル: sintactico.py プロジェクト: rdonate/MiniCalc
            self.componente = self.lexico.siguiente()
            componente = self.analizaExpresion()
            arbol = arboles.ValorAbsoluto(componente)
            if self.componente.cat != "barra":
                raise ErrorSintactico("Aquí tocaba cerrar una barra.")
            self.componente = self.lexico.siguiente()
            return arbol
        elif self.componente.cat == "opad":
            operacion = self.componente
            self.componente = self.lexico.siguiente()
            componente = self.analizaFactor()
            arbol = arboles.CambioSigno(operacion.operacion, componente)
            return arbol
        else:
            raise ErrorSintactico("La verdad, no sé qué hacer con esto.")


if __name__ == "__main__":
    l = sys.stdin.readline()
    while l:
        f = flujo.Flujo(l)
        lex = lexico.Lexico(f)
        S = Sintactico(lex)
        try:
            arbol = S.analizaLinea()
            print arbol.evalua()
        except Error, err:
            sys.stderr.write("%s\n" % err)
            if err.__class__.__name__ in ["ErrorLexico", "ErrorSintactico"]:
                lex.muestraError(sys.stderr)
        l = sys.stdin.readline()