Cómo depurar el error de AppleScript: "Se esperaba" *) "pero se encontró el final de la secuencia de comandos".

4

Me estoy volviendo loco intentando solucionar el siguiente error en mi código AppleScript:

Lo que significa este error es que abrí un comentario en algún lugar del código con un (* pero olvidé cerrarlo con un *) .

El código contiene más de 4000 líneas y cientos de comentarios. He revisado el código durante horas tratando de encontrar este cierre faltante, pero no puedo encontrarlo.

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

    
pregunta rubik's sphere 22.01.2017 - 10:34

2 respuestas

2

Actualización:

La razón por la que no pude encontrar una instancia de (* sin un *) correspondiente es porque cada instancia de (* en realidad tiene un *) correspondiente. Esta no fue la causa del error, a pesar del mensaje de error engañoso que decía que lo era.

El siguiente comentario fue responsable del error:

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

Aparentemente, no puede poner un número impar de comillas dobles en un comentario de AppleScript. Es decir, si abre una oferta, debe cerrarla.

No tengo idea de por qué esto es. Es un comentario , por el amor de Pete. ¿Por qué me importa AppleScript si olvido cerrar una comilla doble en un comentario ?

Además, este requisito no se menciona en Guía del lenguaje AppleScript - Comentarios .

Si tienes curiosidad, acabo de probarlo y puedes poner una comilla en un comentario sin cerrarlo. 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 responsable del error?

Me las arreglé para pensar en un método heurísticamente. Es una locura básica, y para muchas personas es probable que sea obvio, pero nunca se me ocurrió porque estaba leyendo línea tras línea durante horas, buscando el *) que falta.

Usando el siguiente método, encontré la línea exacta de código responsable del error en menos de 5 minutos :

  1. Crea un nuevo archivo AppleScript en blanco.

  2. Copie la mitad de su código en el nuevo archivo.

    1. Si este código produce un error, borre la mitad de este código. Compila el código.

      1. Si este código aún produce un error, borre la mitad de este código. Compila el código.

      2. Si este código ya no produce un error, presione el botón Deshacer y elimine la otra mitad del código. Compila el código.

    2. Si este código no produce un error, presione el botón Deshacer. Esta vez, copie la otra mitad del código original (es decir, copie la mitad que no copió la primera vez).

Tienes la idea. Básicamente, está reduciendo a la mitad el código (por prueba y error) hasta que pueda aislar el error en una sola línea de código. Debe haber un término técnico para este método, pero no conozco el término.

    
respondido por el rubik's sphere 23.01.2017 - 00:44
2

Hay un paquete de resaltado de sintaxis para AppleScript para el editor de texto Átomo . Funciona mejor que el que se proporciona con el Editor de secuencias de comandos, ya que identificará correctamente los comentarios de varias líneas, incluso si la secuencia de comandos no se compila:

A partir de ahí, debería ser fácil identificar el *) que falta.

    
respondido por el Glorfindel 22.01.2017 - 11:18

Lea otras preguntas en las etiquetas