Come eseguire il debug di errore di AppleScript: "Previsto" *) "ma trovato fine dello script."

4

Sto impazzendo nel tentativo di correggere il seguente errore nel mio codice AppleScript:

Che cosa significa questo errore è che ho aperto un commento da qualche parte nel codice con un (* ma ho dimenticato di chiuderlo con un *) .

Il codice contiene oltre 4000 righe e centinaia di commenti. Ho cercato per ore il codice cercando di trovare questa chiusura mancante ma non riesco a trovarlo.

C'è qualche metodo o applicazione che può indicarmi la riga esatta del codice responsabile dell'errore?

    
posta rubik's sphere 22.01.2017 - 10:34
fonte

2 risposte

2

Aggiornamento:

Il motivo per cui non sono riuscito a trovare un'istanza di (* senza un *) corrispondente è perché ogni istanza di (* ha infatti un *) corrispondente. Questa non era la causa dell'errore, nonostante il messaggio di errore fuorviante che affermava che lo era.

Il seguente commento era responsabile dell'errore:

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

Non è possibile inserire un numero dispari di virgolette doppie in un commento AppleScript, a quanto pare. Vale a dire, se apri una citazione, devi chiudere la citazione.

Non ho idea del perché questo sia. È un commento , per l'amor di Pete. Perché AppleScript si preoccupa se mi dimentico di chiudere una virgoletta doppia in un commento ?

Inoltre, questo requisito non è menzionato nel Guida alla lingua AppleScript - Commenti .

Se sei curioso, l'ho appena testato e ti è permesso mettere una virgoletta singola in un commento senza chiuderlo. Ad esempio,

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

non produce errori.

In ogni caso, per rispondere alla mia domanda iniziale:

Is there some method or application that can inform me of the exact line of the code that is responsible for the error?

Sono riuscito a pensare ad un metodo euristicamente. È pazzesco di base, e per molte persone è probabilmente ovvio, ma non mi è mai venuto in mente perché stavo leggendo una riga dopo l'altra per ore, cercando il *) mancante.

Utilizzando il seguente metodo, ho trovato la riga esatta del codice responsabile dell'errore in meno di 5 minuti :

  1. Crea un nuovo file AppleScript vuoto.

  2. Copia metà del tuo codice nel nuovo file.

    1. Se questo codice produce un errore, allora cancella metà del codice. Compila il codice.

      1. Se questo codice produce ancora un errore, allora cancella metà del codice. Compila il codice.

      2. Se questo codice non produce più errori, quindi premi il pulsante Annulla e cancella l'altra metà del codice. Compila il codice.

    2. Se questo codice non produce un errore, quindi premi il pulsante Annulla. Questa volta, copia l'altra metà del codice originale (cioè copia la metà che non hai copiato la prima volta).

Hai un'idea. Fondamentalmente stai dimezzando il codice (per tentativi ed errori) finché non puoi isolare l'errore su una singola riga di codice. Ci deve essere un termine tecnico per questo metodo, ma non conosco il termine.

    
risposta data 23.01.2017 - 00:44
fonte
2

C'è un pacchetto di evidenziazione della sintassi per AppleScript per l'editor di testo Atom . Funziona meglio di quello fornito con Script Editor, poiché identifica correttamente i commenti multilinea, anche se lo script stesso non viene compilato:

Da lì, dovrebbe essere facile identificare il *) mancante.

    
risposta data 22.01.2017 - 11:18
fonte

Leggi altre domande sui tag