home *** CD-ROM | disk | FTP | other *** search
-
-
- Personal Agent 1.0
-
- (C) Copyright 1992 V. Gervasi - ICARUS
-
-
-
- Presentazione
- ---------------
-
- Personal Agent Φ un programma pensato per facilitare la manipolazione di
- files tramite le icone del Workbench. Usando questo programma, vi sarα
- facile vedere immagini grafiche, ascoltare brani musicali, scompattare
- archivi di vario tipo, leggere manuali ed altra documentazione, e compiere
- molte di quelle operazioni che, normalmente, sarebbero soltanto
- accessibili dal CLI. Basterα infatti trascinare delle icone del Workbench
- sull'icona di Personal Agent perchΘ il programma riconosca automaticamente
- il tipo di file associato e compia le azioni opportune.
-
- ááIl programma Φ completamente configurabile, grazie anche ad un semplice
- linguaggio di programmazione interno, di uso intuitivo, e ad una
- interfaccia grafica che si adatta alle preferenze dell'utente.
-
- ááPer facilitare l'uso da parte di utente inesperti, il programma viene
- fornito con alcune configurazioni standard giα preparate, capaci di
- riconoscere molti tipi di files, e con un discreto numero di icone (che
- appaiono sullo schermo del Workbench) fra cui l'utente pu≥ scegliere la
- preferita.
-
- ááIn questo manuale, verranno dapprima illustrate le modalitα di
- funzionamento basilari del programma, dall'installazione all'uso con la
- configurazione standard. In seguito vengono esaminate le possibilitα di
- configurazione e, per ultimo, viene illustrato il FAM, il linguaggio di
- programmazione interno, e il relativo compilatore.
-
-
-
-
- Installazione e uso
- ---------------------
-
- ááSe avete eseguito la procedura di installazione standard, che richiede
- semplicemente un doppio click sull'icona "Install", e avete scelto di
- eseguire Personal Agent alla partenza del sistema (come consigliato), non
- dovete fare nient'altro.
-
- ááSe invece avete scelto di NON eseguire Personal Agent alla partenza del
- sistema, dovrete eseguirlo manualmente: Personal Agent pu≥ essere attivato
- sia dal Workbench, sia dal CLI. Nel primo caso, basta un doppio click
- sull'icona del programma, nel secondo occorre invece digitare il nome del
- programma, preferibilmente preceduto dal comando "run" per richiedere una
- esecuzione "in background", cioΦ concorrente. Un esempio di questa seconda
- modalitα Φ
-
- run >NIL: <NIL: Agent
-
-
-
- ááA meno che non si verifichino problemi (in tal caso, vedi
- l'appendiceáA), il programma visualizzerα sullo schermo un messaggio
- informativo, indicando quale configurazione FAM sta utilizzando, ed un
- messaggio di Copyright. Subito dopo, apparirα sullo schermo del Workbench
- un'icona rappresentante il programma.
-
- ááDa questo momento, basta trascinare l'icona di un file, visualizzata dal
- Workbench, sull'icona del programma, lasciandola su di essa, perchΘ
- Personal Agent analizzi il tipo di file e, in base alle sue deduzioni,
- esegua un comando specificato nella configurazione FAM. In genere, tale
- comando permetterα di "guardare" l'oggetto associato all'icona nel modo
- pi∙ congeniale.
-
- ááUn doppio click sull'icona di Personal Agent mostrerα una finestra con
- delle statistiche sul funzionamento del programma, e tre opzioni per
- continuare l'esecuzione, azzerare le statistiche raccolte fino a quel
- momento o terminare l'esecuzione.
-
-
-
-
- Configurazione del programma
- ------------------------------
-
- ááLa principale modalitα di configurazione di Personal Agent Φ tramite i
- "Parametri" (Tool Types) della sua icona. Se avete eseguito la procedura
- di installazione, troverete questi parametri giα impostati opportunamente,
- altrimenti dovrete indicare manualmente le informazioni richieste. Per
- accedere a queste opzioni, occorre selezionare l'icona del file "Agent",
- che si trova nel cassetto in cui avete installato Personal Agent, e
- scegliere dal men∙ "Icone" (Icons) del Workbench la voce "Informazioni"
- (Informations) (alternativamente, potete premere 'Amiga Destro-I' dopo
- aver selezionato l'icona di "Agent"); comparirα un quadro in cui, oltre ad
- altre informazioni, Φ visualizzata una lista di parametri. Potete cambiare
- queste preferenze selezionando col mouse una delle righe e variandone il
- contenuto nella riga di editazione in fondo alla lista; premete RETURN
- dopo aver effettuato le modifiche.
-
- ááQuando siete soddisfatti delle vostre scelte, premete il pulsante
- "Salva" (Save) presente in fondo al quadro. Se invece avete cambiato idea,
- e non volete alterare la configurazione corrente, premete il pulsante
- "Annulla" (Cancel).
-
- ááQui di seguito sono illustrati i parametri che possono essere modificati
- per adattarli alle vostre esigenze.
-
-
- ICON=<nome-icona>
-
- ááQuesto parametro consente di scegliere quale icona deve apparire sullo
- schermo del Workbench a rappresentare il programma. Il <nome-icona> che
- inserite deve essere il nome di un file, eventualmente preceduto da un
- percorso (path) relativo alla directory in cui si trova Agent (in genere
- quella di installazione), la cui icona viene presa in prestito da Personal
- Agent. Se questo parametro non viene specificato, Personal Agent userα la
- propria icona (quella del file "Agent").
-
- NAME=<nome>
-
- ááCon questo parametro potete stabilire sotto quale nome l'icona scelta
- precedentemente appare sullo schermo del Workbench. Questo pu≥ essere un
- nome qualsiasi, ma Φ preferibile che non sia troppo lungo. Se il parametro
- non viene specificato, Personal Agent usa il proprio nome ("Agent").
-
- OUTPUT=<output>
-
- ááTramite il parametro OUTPUT potete scegliere dove verranno inviati i
- messaggi prodotti dai programmi che Personal Agent esegue per trattare i
- files che gli vengono indicati. Usualmente, vorrete che questi messaggi
- vengano visualizzati sullo schermo, e quindi si userα un <output>
- indirizzato a CON: (che Φ anche la destinazione standard, usata se questa
- voce non viene specificata). ╚ anche consigliabile specificare gli
- attributi di console /AUTO e /WAIT, che consentono di chiudere la finestra
- aperta se i messaggi non sono di interesse, e di non aprirla affatto nel
- caso non vi siano messaggi da visualizzare. La sintassi di CON: Φ
-
- CON:<sinistra>/<alto>/<larghezza>/<altezza>/<titolo><attributi>
-
- per esempio,
-
- OUTPUT=CON:0/15/600/120/Agent/AUTO/WAIT
-
- vuol dire che i messaggi verranno visualizzati in una finestra il cui
- angolo superiore sinistro si troverα alla posizione (0,15) dello schermo,
- larga 600 pixel e alta 120, il cui titolo sarα "Agent". Inoltre, la
- finestra si aprirα soltanto se vi saranno effettivamente dei messaggi da
- visualizzare, ed anche dopo che il programma sarα terminato, attenderα la
- conferma dell'utente (con un click sul pulsante di chiusura) prima di
- chiudersi. Potete trovare informazioni pi∙ dettagliate su CON: sul manuale
- "Using The System Software", fornito con l'Amiga o con l'aggiornamento del
- sistema operativo.
-
- ááSe <output> contiene la sequenza di caratteri "%s", essa verrα
- sostituita con il nome del comando che Personal Agent esegue per la
- visualizzazione (completo di eventuali parametri).
-
- CLASSES=<classes>
-
- ááQuesto parametro consente di indicare quale file contiene il testo
- sorgente del programma FAM che definisce i formati dei files (classi) e le
- azioni da intraprendere per trattarli. Vedete pi∙ oltre per il formato di
- tale file. Se il parametro non Φ presente, viene usato il file "classes".
-
- XPOS=<posizione-x>
- YPOS=<posizione-y>
-
- ááCon questi parametri potete scegliere in quale posizione dello schermo
- apparirα l'icona di Personal Agent; le posizioni specificate devono essere
- in pixel (punti di schermo), la posizione (0,0) Φ l'angolo in alto a
- sinistra dello schermo. Se questi parametri non vengono specificati,
- l'icona verrα posizionata sullo schermo in maniera tale da non interferire
- con altre icone giα presenti. Potete ottenere lo stesso effetto dando il
- valore "-1" per una o entrambe le coordinate; il sistema sceglierα una
- posizione libera opportuna.
-
- WAIT=<secondi>
-
- ááInfine, questo parametro permette di decidere per quanto tempo i
- messaggi di Personal Agent devono rimanere sullo schermo. Il tempo
- standard Φ di 7 secondi. Notate comunque che tutti i messaggi di Personal
- Agent scompaiono non appena viene premuto un tasto, o viene premuto il
- pulsante del mouse all'interno del quadro che mostra il messaggio. Per
- mantenere il messaggio a tempo indeterminato, basta clickare con il mouse
- FUORI dal quadro che contiente il testo; in tal caso il conteggio del
- tempo viene sospeso.
-
-
-
-
-
-
-
- Il linguaggio FAM
- -------------------
-
- ááFAM sta per File Analisys Machine (macchina per l'analisi dei file), e
- questo nome sintetizza bene gli scopi e i limiti del FAM. Se avete
- installato gli esempi, potete vedere alcuni esempi di programmazione in
- FAM nei files "view_classes" e "unpack_classes". I file "view_classes.sys"
- e "unpack_classes.sys" non sono invece leggibili; essi contengono le
- versioni compilate dei due files precedenti.
-
- ááIl FAM Φ un linguaggio molto specializzato, con soltanto pochi comandi
- orientati alla descrizione di formati di files e alla descrizione di
- azioni da intraprendere per la visualizzazione (o altra attivitα) dei
- files stessi.
-
- ááIl formato di un file sorgente FAM Φ il cosiddetto "free form", cioΦ
- "formato libero". Infatti la dislocazione dei comandi Φ del tutto
- ininfluente: spazi, tabulazioni e a-capo non cambiano il significato del
- programma. Inoltre, il FAM Φ stato pensato per facilitare la
- documentazione dei programmi scritti con esso; per tale motivo, i commenti
- possono apparire quasi in qualunque posto nel sorgente, e non necessitano
- di caratteri di delimitazione particolari.
-
- ááIn effetti, le uniche parti del file sorgente analizzate dal compilatore
- sono quelle comprese tra i delimitatori "CLASS"-"END" e "ACTION"-"END";
- fra questi delimitatori (in maiuscolo) i commenti non sono permessi. Tutti
- gli altri elementi del linguaggio sono insensibili al maiuscolo/minuscolo.
-
- ááIgnorando dunque i commenti, i sorgenti FAM sono composti da due tipi di
- comandi, usualmente (ma non obbligatoriamente) raccolti in due sezioni
- distinte: Definizioni di Classi e Definizioni di Azioni.
-
- ááLe definizioni di classi servono a Personal Agent per riconoscere il
- tipo del files con cui ha a che fare; le definizioni di azioni servono
- invece ad indicare cosa fare con tali files.
-
- ááLe definizioni di classi consentono di definire "classi" di files,
- specificando quale formato i files devono avere per appartenere alla
- classe; la specifica del formato pu≥ essere fatta in base al nome e/o in
- base al contenuto del file. La sintassi informale di una definizione di
- classe Φ
-
- CLASS <nome-della-classe> HAS <specifica-formato> END
-
- ááIl <nome-della-classe> Φ il nome (unico) che viene dato alla classe;
- questo nome verrα usato in seguito per stabilire quali azioni vanno
- compiute per operare sui files di questa classe. La <specifica-formato> Φ
- composta, a sua volta, di due tipi di elementi: specifiche sul nome e
- specifiche sul contenuto. La specifica sul nome ha questa forma:
-
- NAME <pattern>
-
- dove il <pattern> Φ una stringa che pu≥ contenere i caratteri jolly
- (pattern) dell'AmigaDOS: # ? ~ ( | ) % [ ]. Potete consultare il vostro
- manuale sull'AmigaDOS per il significato di questi caratteri.
-
- La specifica sul contenuto ha invece la forma
-
- <byte-list> AT <posizione>
-
- dove <byte-list> Φ una sequenza di byte, espressa in vari modi, e
- <posizione> Φ una posizione all'interno del file, espressa in byte
- dall'inizio del file. La <byte-list> pu≥ contenere:
-
- numeri decimali: 123
- numeri ottali: 033
- numeri esadecimali: $AB o 0xC0
- numeri binari: %01100110
- stringhe: "FORM" (questa stringa specifica 4 bytes)
-
- ááQuesti componenti possono essere specificati in qualunque ordine, fino
- ad indicare stringhe lunghe al massimo 256 bytes. Questa non Φ una grossa
- limitazione; se ad esempio si vogliono riconoscere 300 bytes all'inizio di
- un file, si scriverα
-
- ... HAS <primi 250 bytes> AT 0
- AND <restanti 50 bytes> AT 250 ...
-
- ááLe varie specifiche, possono poi essere connesse tramite AND e OR per
- specificare condizioni complesse; l'AND ha la precedenza sull'OR. ╚
- possibile definire diverse volte la stessa classe, in tal caso ogni
- singola definizione viene posta in OR con le precedenti.
-
- Il momento Φ adatto ad alcuni esempi:
-
- áá- Un file IFF ILBM, lo standard per le immagini grafiche, ha la
- caratteristica di contenere la stringa "FORM" nei primi quattro bytes, la
- lunghezza dei dati nei successivi quattro e la stringa "ILBM" dall'ottavo
- al dodicesimo, seguiti da altri dati. Una specifica per tale classe
- potrebbe allora essere
-
-
- CLASS ILBM has "FORM" at 0 AND "ILBM" at 8 END
-
- áá- Un file eseguibile, sull'Amiga, inizia con la sequenza esadecimale
- 000003F3. Ci≥ pu≥ essere specificato con
-
- CLASS Exe has $00 $00 $03 $F3 at 0 END o anche con
- CLASS Exe has 0 0 0x03 0xf3 at 0 END oppure con
- CLASS Exe has 0 0 3 243 at 0 END eccetera.
-
- áá- Il popolare compattatore lharc, e il consimile LZ, producono archivi
- contenenti una serie di files compattati, consentendo un notevole
- risparmio di spazio. I nomi di questi archivi usualmente terminano per
- ".lzh" o ".lha", ma questo non Φ obbligatorio. In ogni caso, per≥ essi
- contengono alla posizione 2 il tipo di compattazione del primo file, che Φ
- una stringa del tipo "-lh?-", in cui il "?" indica il tipo di
- compattazione usato (in genere 0, 1 o 5). Scriviamo allora la specifica
- per i file di questo tipo:
-
- CLASS LZH has NAME #?.lzh
- OR NAME #?.lha
- OR "-lh" at 2 AND "-" at 6
- END
-
- Potremmo anche scrivere
-
- CLASS LZH has NAME #?.lzh
- OR NAME #?.lha
- OR "-lh0-" at 2
- OR "-lh1-" at 2
- OR "-lh5-" at 2
- END
-
- ááNotate come il formato in cui scriviamo le specifiche Φ del tutto
- libero, e dettato in questo caso solo da considerazioni estetiche e di
- chiarezza.
-
-
- ááVeniamo ora alle definizioni di azioni.
-
- Il loro formato Φ
-
- ACTION VIEW <nome-della-classe> IS <azione> END
-
- ááIn questo caso, <nome-della-classe> Φ (ovviamente) il nome della classe,
- lo stesso usato (o che si userα: l'ordine Φ ininfluente) nella definizione
- della classe, mentre <azione> Φ un comando AmigaDOS che verrα eseguito
- quando Personal Agent verrα chiamato ad operare sui files di quella classe.
-
- ááIn <azione>, ogni occorrenza della stringa "%s" verrα sostituita con il
- nome del file in esame. Il comando AmigaDOS verrα eseguito nella directory
- contenente tale file.
-
- ááA questo proposito Φ bene spendere qualche parola. Normalmente, i
- comandi AmigaDOS vengono eseguiti da una Shell (o CLI), e possono quindi
- contare sull'esistenza di un "path", ovvero di una lista di posti
- (directory) in cui cercare il comando da eseguire senza che sia necessario
- indicare esplicitamente dove trovare il comando stesso. Lo stesso vale per
- Personal Agent SE il programma Φ stato eseguito da CLI (o una qualunque
- Shell, come AmigaShell); in caso contrario (esecuzione da Workbench),
- Personal Agent non pu≥ contare sul path e quindi sarα necessario nelle
- <azioni> indicare esplicitamente dove reperire il comando da eseguire. ╚
- possibile che questo comportamente venga corretto in una prossima versione
- del programma, o del Sistema Operativo.
-
- Vediamo qualche esempio:
-
- áá- Vogliamo che, quando viene fornito a Personal Agent un archivio di
- classe LZH (come definita in precedenza), esso mostri la lista dei files
- contenuti nell'archivio stesso:
-
- ACTION VIEW LZH is lz v "%s" END
-
- ááIn questo caso, usiamo il comando LZ con l'opzione v (che mostra
- l'elenco dei files compresi nell'archivio); al %s verrα sostituito il nome
- del file da analizzare. Abbiamo inserito il %s fra virgolette: questa Φ
- una buona norma generale, per evitare che eventuali spazi presenti nel
- nome del file confondano LZ.
-
- áá- Vogliamo che, quando viene analizzato un file ILBM, venga lanciato un
- editor grafico (poniamo si chiami SuperPaint), pronto a lavorare sul file
- passato.
-
- ACTION VIEW ILBM is Work:usr/appl/SP/SuperPaint "%s" END
-
- ááIn questo caso abbiamo indicato il percorso completo per arrivare a
- SuperPaint: ci≥ pu≥ essere necessario se il nostro path abituale non
- contiente "Work:usr/appl/SP" o se prevediamo che Personal Agent venga
- lanciato da Workbench (che, allo stato attuale, non fornisce il path).
-
- áá- Immaginiamo che, per "vedere" un file di archivio, intendiamo
- scompattarlo. Una definizione adeguata per il compattatore LhArc sarebbe
-
- ACTION VIEW LZH is lharc -a -x x "%s" #? RAM: END
-
-
- ááIl "VIEW" (vedi) che compare nella sintassi delle istruzioni Φ l∞ per
- permettere una futura estensione, in cui sia possibile indicare diversi
- tipi di azione per ogni classe di file. In tal caso potremmo avere ACTION
- VIEW per visualizzare il file, ACTION RUN per eseguirlo, ACTION UNPACK per
- scompattarlo, ACTION HEAR per ascoltarlo, ACTION INFO per avere delle
- informazioni... L'utente sarebbe comunque libero di definire i suoi tipi
- di azione; una apposita interfaccia grafica consentirebbe di selezionare
- l'azione che si intende svolgere fra quelle possibili su quel tipo di
- file. Tutto ci≥ Φ per≥ rimandato alla prossima versione...
-
-
- áá╚ da notare che le <azioni> vengono eseguite in maniera ASINCRONA; in
- altre parole, Personal Agent non attende il completamento del comando, ma
- Φ subito pronto ad accettare ulteriori manipolazioni. Questo fatto pu≥
- essere di una certa importanza quando si rilascia sull'icona di Personal
- Agent non una sola icona del Workbench, ma un'intera lista (ottenuta con
- shift-click o con il rettangolo di selezione del Workbench): in tali casi,
- vengono eseguiti quasi contemporaneamente tutti i comandi relativi ai file
- selezionati.
-
-
- ááVeniamo adesso al processo di compilazione.
-
- ááPer effettuare modifiche ai programmi FAM, o per scriverne di nuovi,
- dovrete usare un editor, come ED o MicroEmacs (che fanno parte del
- software di sistema dell'Amiga) e salvare il testo prodotto nel file
- indicato dal parametro CLASSES=... nell'icona di Agent. Quando Personal
- Agent viene eseguito, determina automaticamente (basandosi sulle date
- fornite dal sistema) se Φ necessario ricompilare il sorgente FAM, cioΦ se
- il sorgente porta una data posteriore al file compilato (file .sys), o se
- quest'ultimo non esiste affatto. Se Φ necessaria una compilazione, essa
- viene effettuata silenziosamente, lasciando il risultato in un file che
- porta lo stesso nome del sorgente, con suffisso ".sys", e che viene
- memorizzato nella stessa directory del file sorgente FAM. Naturalmente,
- possono verificarsi degli errori nella compilazione (errori di sintassi,
- troppe definizioni, esaurimento della memoria...); in tali casi, un
- messaggio di avvertimento informerα l'utente dell'accaduto. Quando tutto
- va bene, il processo di compilazione Φ invece del tutto trasparente, a
- parte un breve ritardo alla partenza del programma.
-
-
- ááQuando Personal Agent Φ chiamato ad analizzare un file, confronterα
- dapprima il nome del file con tutte le specifiche ".. HAS NAME xxxxx ..",
- nell'ordine in cui esse appaiono nel file sorgente. Soltanto se nessuna di
- esse coincide col nome del file sotto analisi si passa al confronto sul
- contenuto del file (che Φ un processo pi∙ lento); anche in questo caso, le
- specifiche vengono considerate nell'ordine in cui appaiono nel sorgente. ╚
- del tutto possibile che un file fallisca l'accoppiamento con una clausola,
- ma abbia successo con una successiva specifica relativa alla stessa classe:
-
- CLASS LZH has "-lh1-" at 2 END
-
- CLASS FOO has "Foo1" at 10 END
-
- CLASS LZH has "-lh5-" at 2 END
-
- ááIn questo caso, un file viene considerato di tipo LZH solo se ha "-lh1-"
- alla posizione 2, oppure se ha "-lh5-" alla stessa posizione MA non
- contiene "Foo1" alla posizione 10 (altrimenti verrebbe considerato di
- classe FOO).
-
- ááUna volta determinata la classe a cui il file appartiene, vengono
- esaminate le azioni, nell'ordine in cui appaiono nel sorgente. Se non vi Φ
- alcuna "ACTION" relativa a quella classe, viene visualizzato un messaggio
- d'errore, altrimenti viene eseguito il comando AmigaDOS corrispondente.
-
- ááSe invece il file non appartiene a nessuna classe fra quelle definite,
- viene eseguita l'azione indicata per la classe speciale "DEFAULT". Tutti i
- file che non fanno parte di nessun'altra classe vengono considerati di
- classe "DEFAULT". Di solito ACTION VIEW DEFAULT sarα qualcosa di molto
- generale (come un "more %s" o un "echo Non so che file sia %s !"), la
- scelta spetta comunque all'utente. Se neanche l'azione relativa a DEFAULT
- Φ definita, si ottiene un messaggio d'avvertimento.
-
-
- Nell'Appendice B Φ fornita la sintassi formale del FAM.
-
-
-
-
-
-
-
- Appendice A - Guida ai messaggi
- ---------------------------------
-
- ááI messaggi relativi agli errori di compilazione sono tutti piuttosto
- autoesplicativi. Tali messaggi di errore possono apparire in tre passi di
- compilazione: compilazione NAME (per le clausole HAS NAME xxx),
- compilazione codici (per le clausole HAS xxx AT yyy) e compilazione ACTION
- (per ACTION xxx yyy IS zzz). In ogni caso, il messaggio stesso contiene un
- suggerimento per la correzione dell'errore, nonchΘ la linea del sorgente
- FAM che ha causato l'errore.
-
- ááOltre agli errori di compilazione, possono verificarsi altre condizioni
- anomale, segnalate da appositi messaggi:
-
- "Errore nella compilazione del file FAM "xxx".
- Il File Oggetto FAM "xxx.sys" non Φ stato modificato"
-
- ááPoichΘ si sono verificati degli errori di compilazione, non Φ stato
- possibile produrre un file oggetto; verrα usato (se disponibile) il file
- oggetto preesistente.
-
- "Non posso aprire il file FAM "xxx" !
- Controlla la linea CLASSES=... nella mia icona."
- "Non posso leggere il file oggetto FAM "xxx.sys" !
- Controlla la linea CLASSES=... nella mia icona."
-
- ááPersonal Agent non riesce a trovare il file indicato tramite il
- parametro CLASSES, nΘ riesce a trovare il file di default "classes".
- PoichΘ non Φ possibile sapere quale file di definizioni usare, Personal
- Agent non potrα essere eseguito.
-
- "Non posso far partire la FAM."
-
- ááQuesto messaggio appare solitamente dopo altri messaggi, pi∙ specifici.
- Esso indica l'impossibilitα di eseguire la parte di Personal Agent che si
- occupa del riconoscimento delle classi di files; Personal Agent non potrα
- essere eseguito.
-
- "Non posso aggiungere la mia icona allo schermo del Workbench !"
-
- ááIl sistema non ha accettato la richiesta di Personal Agent di inserire
- la propria icona fra quelle visualizzate dal Workbench. Questo potrebbe
- accadere in condizioni di scarsa memoria, oppure perchΘ il Workbench non Φ
- correntemente in esecuzione, o anche a causa di errori precedenti.
-
- "Non trovo la mia icona !"
-
- ááPersonal Agent non pu≥ accedere al file contenente la propria icona
- ("Agent.info"). PoichΘ in tale file sono memorizzati tutti i parametri che
- regolano il funzionamento di Personal Agent, il programma non potrα essere
- eseguito.
-
- áá"Non posso creare la message port !"
-
- ááSi tratta di una situazione anomala, che si verifica generalmente per
- scarsitα di memoria. Personal Agent non verrα eseguito.
-
- "Non posso accedere a quest'oggetto (Forse non Φ un file ?)"
-
- áá╚ stato chiesto a Personal Agent di esaminare un'icona che non
- corrisponde ad un file, come l'icona di un disco o di un cassetto, o anche
- quella di un'altro programma che, come Personal Agent, risiede sullo
- schermo del Workbench.
-
- "Non posso accedere a "xxx" !"
- "Non posso accedere a quest'oggetto !"
-
- ááPer qualche motivo, Personal Agent non pu≥ accedere al file
- corrispondente all'icona fornitogli. Il file non potrα essere esaminato.
-
- "Non posso aprire "xxx" !"
- "Non posso aprire quest'oggetto !"
-
- ááAll'icona fornita corrisponde un file esistente, ma che non pu≥ essere
- aperto per la lettura. Il file non potrα essere esaminato.
-
- "Non posso eseguire "xxx", il sistema riporta:
- yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
-
- ááPersonal Agent ha riconosciuto il file associato all'icona fornitagli,
- ma nel tentativo di eseguire il comando relativo "xxx", il sistema ha
- riscontrato un errore. Una descrizione pi∙ dettagliata Φ fornita caso per
- caso.
-
- "Non posso aprire "xxx" per i risultati.
- Controlla la linea OUTPUT=... nella mia icona."
-
- ááIl parametro OUTPUT specifica un file (o una CON:) che non pu≥ essere
- aperto. Se si tratta di CON:, probabilmente c'Φ un errore nella sintassi,
- oppure le coordinate indicate giacciono fuori dallo schermo.
-
- ááVi Φ infine un'altra serie di messaggi autoesplicativi, che riguardano i
- casi in cui un file non viene riconosciuto o, se riconosciuto, non Φ stata
- definita alcuna azione corrispondente. In questi casi non si tratta di
- errori, ma di formati non previsti nel programma FAM in uso.
-
-
-
-
-
-
- Appendice B - Sintassi del FAM
- --------------------------------
-
- La sintassi del FAM viene data con una variante della notazione EBNF.
-
- ááGli spazi, i tab e i newline non sono significativi, e possono apparire
- in sequenze arbitrarie ovunque possa apparire un singolo spazio. Tutto ci≥
- che non Φ compreso fra "CLASS" e "END", oppure fra "ACTION" e "END" Φ
- considerato non facente parte del testo del programma - in pratica un
- commento. I delimitatori "CLASS", "ACTION" e "END" devono apparire in
- maiuscolo, gli altri token del linguaggio (compresi gli identificatori e i
- pattern) sono case-insensitive.
-
- ááEcco infine la sintassi: i non terminali sono racchiusi fra "<" e ">",
- il simbolo "<>" indica la stringa nulla, produzioni alternative sono
- separate da "|" e il simbolo di produzione Φ "::=". I terminali sono
- indicati in maiuscolo, ma a parte che per CLASS, ACTION e END il case non
- Φ significativo; le definizioni informali sono racchiuse fra "{" e "}".
-
-
- <program> ::= <stmt-list>
- <stmt-list> ::= <> | <stmt> <stmt-list>
- <stmt> ::= <class-def> | <action-def>
-
- <class-def> ::= CLASS <class-name> HAS <or-pr-list> END
- <class-name> ::= {Identificatore}
- <or-pr-list> ::= <or-pred> | <or-pred> OR <or-pr-list>
- <or-pred> ::= NAME <pattern> | <and-pr-list>
- <and-pr-list> ::= <and-pred> | <and-pred> AND <and-pr-list>
- <and-pred> ::= <bytes> AT <offset>
- <bytes> ::= "<string>" | <byte> | "<string>" <bytes>
- | <byte> <bytes>
- <string> ::= {Una qualunque stringa ASCII, lunga fino a 255
- caratteri. Non pu≥ contenere '"'}
- <byte> ::= 0x<HH> | 0<OOO> | $<HH> | %<BBBBBBBB> | <DDD>
- <HH> ::= {Al pi∙ due cifre esadecimali}
- <OOO> ::= {Al pi∙ tre cifre ottali, con un valore <256}
- <BBBBBBBB> ::= {Al pi∙ otto cifre binarie}
- <DDD> ::= {Ap pi∙ tre cifre decimali, con un valore <256}
-
- <action-def> ::= ACTION <action> <class-name> IS <command> END
- <action> ::= {Identificatore}
- <command> ::= {Un comando AmigaDOS}
-
-
- Note:
- ááGli identificatori possono essere costituiti da una qualunque sequenza
- di caratteri ASCII, eccettuati spazio, tab e newline, ma Φ bene (per
- compatibilitα futura) che essi seguano le regole usuali per gli
- identificatori: una lettera o _, seguiti da un qualunque numero di
- lettere, cifre o _. Formalmente, usando le espressioni regolari:
-
- Identificatore = [a-zA-Z_][a-zA-Z0-9_]*
-
- ááInoltre, Φ da tener presente che al momento i <byte> espressi in binario
- non sono supportati e che l'unica <action> supportata Φ VIEW. Se il valore
- di un qualunque <byte> supera 255, esso viene preso modulo 256 (cioΦ,
- viene considerato soltanto il byte di ordine pi∙ basso).
-
-
-
-
-
- Appendice C - Sviluppi futuri e ringraziamenti
- ------------------------------------------------
-
- ááSi prevedono alcuni cambiamenti al linguaggio FAM, giα anticipati nelle
- sezioni precedenti. Sarα possibile programmare diversi tipi di azioni, con
- le diverse icone corrispondenti, all'interno di un solo file FAM; si
- prevede anche la possibilitα di associare un commento descrittivo ad ogni
- classe definita.
-
- ááLa prossima versione di Personal Agent farα uso delle nuove
- caratteristiche del Sistema Operativo per garantire un supporto in diversi
- linguaggi senza che sia necessario preparare una versione specializzata
- del programma per ogni lingua supportata.
-
- ááL'Autore desidera ringraziare due altri membri del gruppo ICARUS, che
- hanno grandemente contribuito alla verifica del programma e alla
- preparazione della documentazione:
-
- Paolo Canali, che ha curato la versione tedesca, e
- Roberto Rosselli, che ha curato quella francese.
-
-