4 votos

Cómo depurar AppleScript de error: "Espera "*)", pero consideró final de la secuencia de comandos."

Me estoy volviendo loca tratando de solucionar el siguiente error en mi AppleScript código:

enter image description here

Lo que significa este error es que he abierto un comentario en algún lugar en el código con un (* pero he olvidado de cerrar con un *).

El código contiene más de 4000 líneas y cientos de comentarios. He buscado en el código de horas tratando de encontrar la parte que falta del cierre, pero no puedo encontrarlo.

¿Hay algún método o aplicación que pueda informarme de la línea exacta del código que es responsable del error?

1voto

TN. Puntos 3450

Hay un resaltado de sintaxis del paquete de AppleScript para el editor de texto Atom. Funciona mejor que el que se proporciona con el Editor de secuencias de Comandos, como se va a identificar correctamente los comentarios multilínea, aunque el guión en sí, no de compilación:

enter image description here

A partir de ahí, debe ser fácil identificar a los desaparecidos *).

1voto

rubik's sphere Puntos 31

Actualización:

La razón por la que no he podido encontrar un ejemplo de un (* sin el correspondiente *) es debido a que cada instancia de (* tiene de hecho una correspondiente *). Esta no era la causa del error, a pesar de la engañosa mensaje de error que decía que era.

El siguiente comentario fue el responsable de que el error:

    (*  
        "This is the text that I want to display            
    *)

Usted no puede poner un número impar de comillas dobles en un AppleScript comentario, al parecer. Es decir, si se abre una cita, usted debe cerrar la cita.

No tengo idea de por qué esto es. Es un comentario, para Pete's sake. ¿Por qué AppleScript cuidado si me olvide de cerrar comillas dobles en un comentario?

También, este requisito no se menciona en la Guía de Lenguaje de AppleScript - Comentarios.

Si usted es curioso, acabo de probar, y se le permite poner una comilla en un comentario, sin cerrarla. Por ejemplo,

(* 'This is the text that I want to display *)

no produce ningún error.


De todos modos, para responder a mi pregunta original:

¿Hay algún método o aplicación que pueda informarme de la línea exacta del código que es responsable del error?

Me las arreglé para pensar en un método de forma heurística. Es una locura básica, y para muchas personas es probablemente obvio, pero nunca se me ocurrió mientras leía la línea después de la línea durante horas, buscando a los desaparecidos *).

Utilizando el siguiente método, he encontrado la línea de código responsable por el error en menos de 5 minutos:

  1. Crear una nueva, en blanco archivo AppleScript.

  2. Copia de la mitad de su código para el nuevo archivo.

    1. Si este código se produce un error, a continuación, elimine la mitad de este código. Compilar el código.

      1. Si este código todavía se produce un error, a continuación, elimine la mitad de este código. Compilar el código.

      2. Si este código ya no se produce un error, a continuación, pulse el botón Deshacer y eliminar la otra mitad de el código. Compilar el código.

    2. Si este código no se puede producir un error, a continuación, pulse el botón Deshacer. Esta vez, la copia de la otra mitad del código original (es decir, copia de la mitad de la que no tenía copia de la primera vez).

Usted consigue la idea. Que son, básicamente, reducir a la mitad el código (por ensayo y error) hasta que pueda aislar el error de una sola línea de código. Debe haber un término técnico para este método, pero no sé el término.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X