home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / utility / misc / agent10.lzh / Docs / Agent_I.doc < prev    next >
Encoding:
Text File  |  1992-05-18  |  29.0 KB  |  647 lines

  1.  
  2.  
  3.                            Personal Agent 1.0
  4.  
  5.                 (C) Copyright 1992 V. Gervasi - ICARUS
  6.  
  7.  
  8.  
  9.          Presentazione
  10.         ---------------
  11.  
  12.   Personal Agent Φ un programma pensato per facilitare la manipolazione di
  13. files  tramite  le  icone  del Workbench. Usando questo programma, vi sarα
  14. facile  vedere  immagini  grafiche,  ascoltare brani musicali, scompattare
  15. archivi di vario tipo, leggere manuali ed altra documentazione, e compiere
  16. molte   di   quelle   operazioni   che,  normalmente,  sarebbero  soltanto
  17. accessibili  dal CLI. Basterα infatti trascinare delle icone del Workbench
  18. sull'icona di Personal Agent perchΘ il programma riconosca automaticamente
  19. il tipo di file associato e compia le azioni opportune.
  20.  
  21. ááIl  programma Φ completamente configurabile, grazie anche ad un semplice
  22. linguaggio   di  programmazione  interno,  di  uso  intuitivo,  e  ad  una
  23. interfaccia grafica che si adatta alle preferenze dell'utente.
  24.  
  25. ááPer  facilitare  l'uso  da parte di utente inesperti, il programma viene
  26. fornito  con  alcune  configurazioni  standard  giα  preparate,  capaci di
  27. riconoscere  molti  tipi  di files, e con un discreto numero di icone (che
  28. appaiono  sullo  schermo  del Workbench) fra cui l'utente pu≥ scegliere la
  29. preferita.
  30.  
  31. ááIn   questo   manuale,  verranno  dapprima  illustrate  le  modalitα  di
  32. funzionamento  basilari  del  programma, dall'installazione all'uso con la
  33. configurazione  standard.  In  seguito vengono esaminate le possibilitα di
  34. configurazione  e,  per  ultimo, viene illustrato il FAM, il linguaggio di
  35. programmazione interno, e il relativo compilatore.
  36.  
  37.  
  38.  
  39.  
  40.          Installazione e uso
  41.         ---------------------
  42.  
  43. ááSe  avete  eseguito la procedura di installazione standard, che richiede
  44. semplicemente  un  doppio  click  sull'icona  "Install", e avete scelto di
  45. eseguire  Personal Agent alla partenza del sistema (come consigliato), non
  46. dovete fare nient'altro.
  47.  
  48. ááSe  invece avete scelto di NON eseguire Personal Agent alla partenza del
  49. sistema, dovrete eseguirlo manualmente: Personal Agent pu≥ essere attivato
  50. sia  dal  Workbench,  sia  dal  CLI. Nel primo caso, basta un doppio click
  51. sull'icona  del programma, nel secondo occorre invece digitare il nome del
  52. programma,  preferibilmente preceduto dal comando "run" per richiedere una
  53. esecuzione "in background", cioΦ concorrente. Un esempio di questa seconda
  54. modalitα Φ
  55.  
  56.                 run >NIL: <NIL: Agent
  57.  
  58.  
  59.  
  60. ááA   meno   che   non   si   verifichino  problemi  (in  tal  caso,  vedi
  61. l'appendiceáA),  il  programma  visualizzerα  sullo  schermo  un messaggio
  62. informativo,  indicando  quale  configurazione  FAM sta utilizzando, ed un
  63. messaggio  di Copyright. Subito dopo, apparirα sullo schermo del Workbench
  64. un'icona rappresentante il programma.
  65.  
  66. ááDa questo momento, basta trascinare l'icona di un file, visualizzata dal
  67. Workbench,  sull'icona  del  programma,  lasciandola  su  di  essa, perchΘ
  68. Personal  Agent  analizzi  il  tipo di file e, in base alle sue deduzioni,
  69. esegua  un  comando  specificato nella configurazione FAM. In genere, tale
  70. comando  permetterα  di  "guardare" l'oggetto associato all'icona nel modo
  71. pi∙ congeniale.
  72.  
  73. ááUn  doppio  click sull'icona di Personal Agent mostrerα una finestra con
  74. delle  statistiche  sul  funzionamento  del  programma,  e tre opzioni per
  75. continuare  l'esecuzione,  azzerare  le  statistiche  raccolte fino a quel
  76. momento o terminare l'esecuzione.
  77.  
  78.  
  79.  
  80.  
  81.          Configurazione del programma
  82.         ------------------------------
  83.  
  84. ááLa  principale  modalitα di configurazione di Personal Agent Φ tramite i
  85. "Parametri"  (Tool  Types) della sua icona. Se avete eseguito la procedura
  86. di installazione, troverete questi parametri giα impostati opportunamente,
  87. altrimenti  dovrete  indicare  manualmente  le informazioni richieste. Per
  88. accedere  a  queste opzioni, occorre selezionare l'icona del file "Agent",
  89. che  si  trova  nel  cassetto  in  cui  avete installato Personal Agent, e
  90. scegliere  dal  men∙  "Icone" (Icons) del Workbench la voce "Informazioni"
  91. (Informations)  (alternativamente,  potete  premere  'Amiga Destro-I' dopo
  92. aver selezionato l'icona di "Agent"); comparirα un quadro in cui, oltre ad
  93. altre informazioni, Φ visualizzata una lista di parametri. Potete cambiare
  94. queste  preferenze  selezionando col mouse una delle righe e variandone il
  95. contenuto  nella  riga  di  editazione in fondo alla lista; premete RETURN
  96. dopo aver effettuato le modifiche.
  97.  
  98. ááQuando  siete  soddisfatti  delle  vostre  scelte,  premete  il pulsante
  99. "Salva" (Save) presente in fondo al quadro. Se invece avete cambiato idea,
  100. e  non  volete  alterare  la  configurazione corrente, premete il pulsante
  101. "Annulla" (Cancel).
  102.  
  103. ááQui di seguito sono illustrati i parametri che possono essere modificati
  104. per adattarli alle vostre esigenze.
  105.  
  106.  
  107.         ICON=<nome-icona>
  108.  
  109. ááQuesto  parametro  consente di scegliere quale icona deve apparire sullo
  110. schermo  del  Workbench  a rappresentare il programma. Il <nome-icona> che
  111. inserite  deve  essere  il  nome di un file, eventualmente preceduto da un
  112. percorso  (path)  relativo alla directory in cui si trova Agent (in genere
  113. quella di installazione), la cui icona viene presa in prestito da Personal
  114. Agent.  Se questo parametro non viene specificato, Personal Agent userα la
  115. propria icona (quella del file "Agent").
  116.  
  117.         NAME=<nome>
  118.  
  119. ááCon  questo  parametro  potete stabilire sotto quale nome l'icona scelta
  120. precedentemente  appare  sullo schermo del Workbench. Questo pu≥ essere un
  121. nome qualsiasi, ma Φ preferibile che non sia troppo lungo. Se il parametro
  122. non viene specificato, Personal Agent usa il proprio nome ("Agent").
  123.  
  124.         OUTPUT=<output>
  125.  
  126. ááTramite  il  parametro  OUTPUT  potete scegliere dove verranno inviati i
  127. messaggi  prodotti  dai programmi che Personal Agent esegue per trattare i
  128. files  che  gli  vengono indicati. Usualmente, vorrete che questi messaggi
  129. vengano  visualizzati  sullo  schermo,  e  quindi  si  userα  un  <output>
  130. indirizzato  a CON: (che Φ anche la destinazione standard, usata se questa
  131. voce  non  viene  specificata).  ╚  anche  consigliabile  specificare  gli
  132. attributi di console /AUTO e /WAIT, che consentono di chiudere la finestra
  133. aperta  se  i messaggi non sono di interesse, e di non aprirla affatto nel
  134. caso non vi siano messaggi da visualizzare. La sintassi di CON: Φ
  135.  
  136.     CON:<sinistra>/<alto>/<larghezza>/<altezza>/<titolo><attributi>
  137.  
  138.   per esempio,
  139.  
  140.     OUTPUT=CON:0/15/600/120/Agent/AUTO/WAIT
  141.  
  142. vuol  dire  che  i  messaggi  verranno visualizzati in una finestra il cui
  143. angolo  superiore sinistro si troverα alla posizione (0,15) dello schermo,
  144. larga  600  pixel  e  alta  120,  il  cui titolo sarα "Agent". Inoltre, la
  145. finestra  si  aprirα soltanto se vi saranno effettivamente dei messaggi da
  146. visualizzare,  ed anche dopo che il programma sarα terminato, attenderα la
  147. conferma  dell'utente  (con  un  click  sul pulsante di chiusura) prima di
  148. chiudersi. Potete trovare informazioni pi∙ dettagliate su CON: sul manuale
  149. "Using The System Software", fornito con l'Amiga o con l'aggiornamento del
  150. sistema operativo.
  151.  
  152. ááSe   <output>  contiene  la  sequenza  di  caratteri  "%s",  essa  verrα
  153. sostituita  con  il  nome  del  comando  che  Personal Agent esegue per la
  154. visualizzazione (completo di eventuali parametri).
  155.  
  156.         CLASSES=<classes>
  157.  
  158. ááQuesto  parametro  consente  di  indicare  quale  file contiene il testo
  159. sorgente del programma FAM che definisce i formati dei files (classi) e le
  160. azioni  da intraprendere per trattarli. Vedete pi∙ oltre per il formato di
  161. tale file. Se il parametro non Φ presente, viene usato il file "classes".
  162.  
  163.         XPOS=<posizione-x>
  164.         YPOS=<posizione-y>
  165.  
  166. ááCon  questi  parametri potete scegliere in quale posizione dello schermo
  167. apparirα l'icona di Personal Agent; le posizioni specificate devono essere
  168. in  pixel  (punti  di  schermo),  la  posizione (0,0) Φ l'angolo in alto a
  169. sinistra  dello  schermo.  Se  questi  parametri  non vengono specificati,
  170. l'icona verrα posizionata sullo schermo in maniera tale da non interferire
  171. con  altre  icone giα presenti. Potete ottenere lo stesso effetto dando il
  172. valore  "-1"  per  una  o entrambe le coordinate; il sistema sceglierα una
  173. posizione libera opportuna.
  174.  
  175.         WAIT=<secondi>
  176.  
  177. ááInfine,  questo  parametro  permette  di  decidere  per  quanto  tempo i
  178. messaggi  di  Personal  Agent  devono  rimanere  sullo  schermo.  Il tempo
  179. standard  Φ di 7 secondi. Notate comunque che tutti i messaggi di Personal
  180. Agent  scompaiono  non  appena  viene premuto un tasto, o viene premuto il
  181. pulsante  del  mouse  all'interno  del quadro che mostra il messaggio. Per
  182. mantenere  il messaggio a tempo indeterminato, basta clickare con il mouse
  183. FUORI  dal  quadro  che  contiente  il testo; in tal caso il conteggio del
  184. tempo viene sospeso.
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.          Il linguaggio FAM
  193.         -------------------
  194.  
  195. ááFAM  sta  per File Analisys Machine (macchina per l'analisi dei file), e
  196. questo  nome  sintetizza  bene  gli  scopi  e  i  limiti del FAM. Se avete
  197. installato  gli  esempi,  potete vedere alcuni esempi di programmazione in
  198. FAM nei files "view_classes" e "unpack_classes". I file "view_classes.sys"
  199. e  "unpack_classes.sys"  non  sono  invece  leggibili;  essi contengono le
  200. versioni compilate dei due files precedenti.
  201.  
  202. ááIl  FAM  Φ un linguaggio molto specializzato, con soltanto pochi comandi
  203. orientati  alla  descrizione  di  formati  di  files e alla descrizione di
  204. azioni  da  intraprendere  per  la  visualizzazione (o altra attivitα) dei
  205. files stessi.
  206.  
  207. ááIl  formato  di  un  file sorgente FAM Φ il cosiddetto "free form", cioΦ
  208. "formato  libero".  Infatti  la  dislocazione  dei  comandi  Φ  del  tutto
  209. ininfluente:  spazi,  tabulazioni e a-capo non cambiano il significato del
  210. programma.   Inoltre,   il   FAM   Φ   stato  pensato  per  facilitare  la
  211. documentazione dei programmi scritti con esso; per tale motivo, i commenti
  212. possono  apparire quasi in qualunque posto nel sorgente, e non necessitano
  213. di caratteri di delimitazione particolari.
  214.  
  215. ááIn effetti, le uniche parti del file sorgente analizzate dal compilatore
  216. sono  quelle  comprese  tra i delimitatori "CLASS"-"END" e "ACTION"-"END";
  217. fra questi delimitatori (in maiuscolo) i commenti non sono permessi. Tutti
  218. gli altri elementi del linguaggio sono insensibili al maiuscolo/minuscolo.
  219.  
  220. ááIgnorando dunque i commenti, i sorgenti FAM sono composti da due tipi di
  221. comandi,  usualmente  (ma  non  obbligatoriamente) raccolti in due sezioni
  222. distinte: Definizioni di Classi e Definizioni di Azioni.
  223.  
  224. ááLe  definizioni  di  classi  servono a Personal Agent per riconoscere il
  225. tipo  del  files  con  cui ha a che fare; le definizioni di azioni servono
  226. invece ad indicare cosa fare con tali files.
  227.  
  228. ááLe  definizioni  di  classi  consentono  di  definire "classi" di files,
  229. specificando  quale  formato  i  files  devono  avere per appartenere alla
  230. classe;  la  specifica del formato pu≥ essere fatta in base al nome e/o in
  231. base  al  contenuto  del file. La sintassi informale di una definizione di
  232. classe Φ
  233.  
  234.         CLASS <nome-della-classe> HAS <specifica-formato> END
  235.  
  236. ááIl  <nome-della-classe>  Φ  il  nome (unico) che viene dato alla classe;
  237. questo  nome  verrα  usato  in  seguito  per  stabilire quali azioni vanno
  238. compiute  per operare sui files di questa classe. La <specifica-formato> Φ
  239. composta,  a  sua  volta,  di  due tipi di elementi: specifiche sul nome e
  240. specifiche sul contenuto. La specifica sul nome ha questa forma:
  241.  
  242.                 NAME <pattern>
  243.  
  244. dove  il  <pattern>  Φ  una  stringa  che  pu≥ contenere i caratteri jolly
  245. (pattern)  dell'AmigaDOS:  #  ? ~ ( | ) % [ ]. Potete consultare il vostro
  246. manuale sull'AmigaDOS per il significato di questi caratteri.
  247.  
  248.   La specifica sul contenuto ha invece la forma
  249.  
  250.                 <byte-list> AT <posizione>
  251.  
  252. dove  <byte-list>  Φ  una  sequenza  di  byte,  espressa  in  vari modi, e
  253. <posizione>  Φ  una  posizione  all'interno  del  file,  espressa  in byte
  254. dall'inizio del file. La <byte-list> pu≥ contenere:
  255.  
  256.         numeri decimali:        123
  257.         numeri ottali:          033
  258.         numeri esadecimali:     $AB o 0xC0
  259.         numeri binari:          %01100110
  260.         stringhe:               "FORM"  (questa stringa specifica 4 bytes)
  261.  
  262. ááQuesti  componenti  possono essere specificati in qualunque ordine, fino
  263. ad  indicare stringhe lunghe al massimo 256 bytes. Questa non Φ una grossa
  264. limitazione; se ad esempio si vogliono riconoscere 300 bytes all'inizio di
  265. un file, si scriverα
  266.  
  267.         ... HAS <primi 250 bytes> AT 0
  268.             AND <restanti 50 bytes> AT 250  ...
  269.  
  270. ááLe  varie  specifiche,  possono poi essere connesse tramite AND e OR per
  271. specificare  condizioni  complesse;  l'AND  ha  la  precedenza  sull'OR. ╚
  272. possibile  definire  diverse  volte  la  stessa  classe,  in tal caso ogni
  273. singola definizione viene posta in OR con le precedenti.
  274.  
  275.   Il momento Φ adatto ad alcuni esempi:
  276.  
  277. áá-  Un  file  IFF  ILBM,  lo  standard  per  le  immagini grafiche, ha la
  278. caratteristica  di contenere la stringa "FORM" nei primi quattro bytes, la
  279. lunghezza  dei dati nei successivi quattro e la stringa "ILBM" dall'ottavo
  280. al  dodicesimo,  seguiti  da  altri  dati.  Una  specifica per tale classe
  281. potrebbe allora essere
  282.  
  283.  
  284.         CLASS ILBM has "FORM" at 0 AND "ILBM" at 8 END
  285.  
  286. áá-  Un  file  eseguibile,  sull'Amiga, inizia con la sequenza esadecimale
  287. 000003F3. Ci≥ pu≥ essere specificato con
  288.  
  289.         CLASS Exe has $00 $00 $03 $F3 at 0 END         o anche con
  290.         CLASS Exe has 0 0 0x03 0xf3 at 0 END           oppure con
  291.         CLASS Exe has 0 0 3 243 at 0 END               eccetera.
  292.  
  293. áá-  Il  popolare compattatore lharc, e il consimile LZ, producono archivi
  294. contenenti   una  serie  di  files  compattati,  consentendo  un  notevole
  295. risparmio  di  spazio.  I  nomi di questi archivi usualmente terminano per
  296. ".lzh"  o  ".lha",  ma  questo non Φ obbligatorio. In ogni caso, per≥ essi
  297. contengono alla posizione 2 il tipo di compattazione del primo file, che Φ
  298. una   stringa  del  tipo  "-lh?-",  in  cui  il  "?"  indica  il  tipo  di
  299. compattazione  usato  (in  genere 0, 1 o 5). Scriviamo allora la specifica
  300. per i file di questo tipo:
  301.  
  302.         CLASS LZH has      NAME #?.lzh
  303.                         OR NAME #?.lha
  304.                         OR "-lh" at 2 AND "-" at 6
  305.         END
  306.  
  307.   Potremmo anche scrivere
  308.  
  309.         CLASS LZH has     NAME #?.lzh
  310.                        OR NAME #?.lha
  311.                        OR "-lh0-" at 2
  312.                        OR "-lh1-" at 2
  313.                        OR "-lh5-" at 2
  314.         END
  315.  
  316. ááNotate  come  il  formato  in  cui  scriviamo  le specifiche Φ del tutto
  317. libero,  e  dettato  in  questo caso solo da considerazioni estetiche e di
  318. chiarezza.
  319.  
  320.  
  321. ááVeniamo ora alle definizioni di azioni.
  322.  
  323.   Il loro formato Φ
  324.  
  325.         ACTION VIEW <nome-della-classe> IS <azione> END
  326.  
  327. ááIn questo caso, <nome-della-classe> Φ (ovviamente) il nome della classe,
  328. lo stesso usato (o che si userα: l'ordine Φ ininfluente) nella definizione
  329. della  classe,  mentre  <azione>  Φ un comando AmigaDOS che verrα eseguito
  330. quando Personal Agent verrα chiamato ad operare sui files di quella classe.
  331.  
  332. ááIn <azione>, ogni occorrenza della stringa "%s" verrα sostituita con il
  333. nome del file in esame. Il comando AmigaDOS verrα eseguito nella directory
  334. contenente tale file.
  335.  
  336. ááA  questo  proposito  Φ  bene  spendere  qualche  parola. Normalmente, i
  337. comandi  AmigaDOS  vengono eseguiti da una Shell (o CLI), e possono quindi
  338. contare  sull'esistenza  di  un  "path",  ovvero  di  una  lista  di posti
  339. (directory) in cui cercare il comando da eseguire senza che sia necessario
  340. indicare esplicitamente dove trovare il comando stesso. Lo stesso vale per
  341. Personal  Agent  SE  il programma Φ stato eseguito da CLI (o una qualunque
  342. Shell,  come  AmigaShell);  in  caso  contrario (esecuzione da Workbench),
  343. Personal  Agent  non  pu≥  contare sul path e quindi sarα necessario nelle
  344. <azioni>  indicare  esplicitamente dove reperire il comando da eseguire. ╚
  345. possibile che questo comportamente venga corretto in una prossima versione
  346. del programma, o del Sistema Operativo.
  347.  
  348.   Vediamo qualche esempio:
  349.  
  350. áá-  Vogliamo  che,  quando  viene fornito a Personal Agent un archivio di
  351. classe  LZH  (come definita in precedenza), esso mostri la lista dei files
  352. contenuti nell'archivio stesso:
  353.  
  354.         ACTION VIEW LZH is lz v "%s" END
  355.  
  356. ááIn  questo  caso,  usiamo  il  comando  LZ  con  l'opzione v (che mostra
  357. l'elenco dei files compresi nell'archivio); al %s verrα sostituito il nome
  358. del  file  da  analizzare. Abbiamo inserito il %s fra virgolette: questa Φ
  359. una  buona  norma  generale,  per evitare che eventuali spazi presenti nel
  360. nome del file confondano LZ.
  361.  
  362. áá-  Vogliamo che, quando viene analizzato un file ILBM, venga lanciato un
  363. editor  grafico (poniamo si chiami SuperPaint), pronto a lavorare sul file
  364. passato.
  365.  
  366.         ACTION VIEW ILBM is Work:usr/appl/SP/SuperPaint "%s" END
  367.  
  368. ááIn  questo  caso  abbiamo  indicato  il percorso completo per arrivare a
  369. SuperPaint:  ci≥  pu≥  essere  necessario  se  il nostro path abituale non
  370. contiente  "Work:usr/appl/SP"  o  se  prevediamo  che Personal Agent venga
  371. lanciato da Workbench (che, allo stato attuale, non fornisce il path).
  372.  
  373. áá-  Immaginiamo  che,  per  "vedere"  un  file  di  archivio,  intendiamo
  374. scompattarlo. Una definizione adeguata per il compattatore LhArc sarebbe
  375.  
  376.         ACTION VIEW LZH is lharc -a -x x "%s" #? RAM: END
  377.  
  378.  
  379. ááIl  "VIEW"  (vedi)  che compare nella sintassi delle istruzioni Φ l∞ per
  380. permettere  una  futura  estensione, in cui sia possibile indicare diversi
  381. tipi  di azione per ogni classe di file. In tal caso potremmo avere ACTION
  382. VIEW per visualizzare il file, ACTION RUN per eseguirlo, ACTION UNPACK per
  383. scompattarlo,  ACTION  HEAR  per  ascoltarlo,  ACTION INFO per avere delle
  384. informazioni...  L'utente  sarebbe comunque libero di definire i suoi tipi
  385. di  azione;  una apposita interfaccia grafica consentirebbe di selezionare
  386. l'azione  che  si  intende  svolgere  fra quelle possibili su quel tipo di
  387. file. Tutto ci≥ Φ per≥ rimandato alla prossima versione...
  388.  
  389.  
  390. áá╚  da  notare  che le <azioni> vengono eseguite in maniera ASINCRONA; in
  391. altre  parole, Personal Agent non attende il completamento del comando, ma
  392. Φ  subito  pronto  ad  accettare ulteriori manipolazioni. Questo fatto pu≥
  393. essere  di  una certa importanza quando si rilascia sull'icona di Personal
  394. Agent  non  una sola icona del Workbench, ma un'intera lista (ottenuta con
  395. shift-click o con il rettangolo di selezione del Workbench): in tali casi,
  396. vengono eseguiti quasi contemporaneamente tutti i comandi relativi ai file
  397. selezionati.
  398.  
  399.  
  400. ááVeniamo adesso al processo di compilazione.
  401.  
  402. ááPer  effettuare  modifiche  ai  programmi FAM, o per scriverne di nuovi,
  403. dovrete  usare  un  editor,  come  ED  o  MicroEmacs  (che fanno parte del
  404. software  di  sistema  dell'Amiga)  e  salvare  il testo prodotto nel file
  405. indicato  dal  parametro  CLASSES=... nell'icona di Agent. Quando Personal
  406. Agent  viene  eseguito,  determina  automaticamente  (basandosi sulle date
  407. fornite  dal sistema) se Φ necessario ricompilare il sorgente FAM, cioΦ se
  408. il  sorgente porta una data posteriore al file compilato (file .sys), o se
  409. quest'ultimo  non  esiste  affatto. Se Φ necessaria una compilazione, essa
  410. viene  effettuata  silenziosamente,  lasciando il risultato in un file che
  411. porta  lo  stesso  nome  del  sorgente,  con  suffisso ".sys", e che viene
  412. memorizzato  nella  stessa  directory del file sorgente FAM. Naturalmente,
  413. possono  verificarsi  degli errori nella compilazione (errori di sintassi,
  414. troppe  definizioni,  esaurimento  della  memoria...);  in  tali  casi, un
  415. messaggio  di  avvertimento informerα l'utente dell'accaduto. Quando tutto
  416. va  bene,  il  processo  di compilazione Φ invece del tutto trasparente, a
  417. parte un breve ritardo alla partenza del programma.
  418.  
  419.  
  420. ááQuando  Personal  Agent  Φ  chiamato  ad analizzare un file, confronterα
  421. dapprima  il nome del file con tutte le specifiche ".. HAS NAME xxxxx ..",
  422. nell'ordine in cui esse appaiono nel file sorgente. Soltanto se nessuna di
  423. esse  coincide  col  nome del file sotto analisi si passa al confronto sul
  424. contenuto del file (che Φ un processo pi∙ lento); anche in questo caso, le
  425. specifiche vengono considerate nell'ordine in cui appaiono nel sorgente. ╚
  426. del tutto possibile che un file fallisca l'accoppiamento con una clausola,
  427. ma abbia successo con una successiva specifica relativa alla stessa classe:
  428.  
  429.         CLASS LZH has "-lh1-" at 2 END
  430.  
  431.         CLASS FOO has "Foo1" at 10 END
  432.  
  433.         CLASS LZH has "-lh5-" at 2 END
  434.  
  435. ááIn questo caso, un file viene considerato di tipo LZH solo se ha "-lh1-"
  436. alla  posizione  2,  oppure  se  ha  "-lh5-"  alla stessa posizione MA non
  437. contiene  "Foo1"  alla  posizione  10  (altrimenti verrebbe considerato di
  438. classe FOO).
  439.  
  440. ááUna  volta  determinata  la  classe  a  cui  il file appartiene, vengono
  441. esaminate le azioni, nell'ordine in cui appaiono nel sorgente. Se non vi Φ
  442. alcuna  "ACTION" relativa a quella classe, viene visualizzato un messaggio
  443. d'errore, altrimenti viene eseguito il comando AmigaDOS corrispondente.
  444.  
  445. ááSe  invece  il file non appartiene a nessuna classe fra quelle definite,
  446. viene eseguita l'azione indicata per la classe speciale "DEFAULT". Tutti i
  447. file  che  non  fanno  parte di nessun'altra classe vengono considerati di
  448. classe  "DEFAULT".  Di  solito  ACTION VIEW DEFAULT sarα qualcosa di molto
  449. generale  (come  un  "more  %s"  o un "echo Non so che file sia %s !"), la
  450. scelta  spetta comunque all'utente. Se neanche l'azione relativa a DEFAULT
  451. Φ definita, si ottiene un messaggio d'avvertimento.
  452.  
  453.  
  454.   Nell'Appendice B Φ fornita la sintassi formale del FAM.
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.          Appendice A - Guida ai messaggi
  463.         ---------------------------------
  464.  
  465. ááI  messaggi  relativi  agli  errori di compilazione sono tutti piuttosto
  466. autoesplicativi.  Tali messaggi di errore possono apparire in tre passi di
  467. compilazione:   compilazione   NAME   (per  le  clausole  HAS  NAME  xxx),
  468. compilazione codici (per le clausole HAS xxx AT yyy) e compilazione ACTION
  469. (per ACTION xxx yyy IS zzz). In ogni caso, il messaggio stesso contiene un
  470. suggerimento  per  la correzione dell'errore, nonchΘ la linea del sorgente
  471. FAM che ha causato l'errore.
  472.  
  473. ááOltre  agli errori di compilazione, possono verificarsi altre condizioni
  474. anomale, segnalate da appositi messaggi:
  475.  
  476.   "Errore nella compilazione del file FAM "xxx".
  477.    Il File Oggetto FAM "xxx.sys" non Φ stato modificato"
  478.  
  479. ááPoichΘ  si  sono  verificati  degli  errori di compilazione, non Φ stato
  480. possibile  produrre  un file oggetto; verrα usato (se disponibile) il file
  481. oggetto preesistente.
  482.  
  483.   "Non posso aprire il file FAM "xxx" !
  484.    Controlla la linea CLASSES=... nella mia icona."
  485.   "Non posso leggere il file oggetto FAM "xxx.sys" !
  486.    Controlla la linea CLASSES=... nella mia icona."
  487.  
  488. ááPersonal  Agent  non  riesce  a  trovare  il  file  indicato  tramite il
  489. parametro  CLASSES,  nΘ  riesce  a  trovare  il file di default "classes".
  490. PoichΘ  non  Φ  possibile sapere quale file di definizioni usare, Personal
  491. Agent non potrα essere eseguito.
  492.  
  493.   "Non posso far partire la FAM."
  494.  
  495. ááQuesto  messaggio appare solitamente dopo altri messaggi, pi∙ specifici.
  496. Esso  indica l'impossibilitα di eseguire la parte di Personal Agent che si
  497. occupa  del riconoscimento delle classi di files; Personal Agent non potrα
  498. essere eseguito.
  499.  
  500.   "Non posso aggiungere la mia icona allo schermo del Workbench !"
  501.  
  502. ááIl  sistema  non ha accettato la richiesta di Personal Agent di inserire
  503. la  propria  icona  fra quelle visualizzate dal Workbench. Questo potrebbe
  504. accadere in condizioni di scarsa memoria, oppure perchΘ il Workbench non Φ
  505. correntemente in esecuzione, o anche a causa di errori precedenti.
  506.  
  507.   "Non trovo la mia icona !"
  508.  
  509. ááPersonal  Agent  non  pu≥  accedere  al file contenente la propria icona
  510. ("Agent.info"). PoichΘ in tale file sono memorizzati tutti i parametri che
  511. regolano il funzionamento di Personal Agent, il programma non potrα essere
  512. eseguito.
  513.  
  514. áá"Non posso creare la message port !"
  515.  
  516. ááSi  tratta  di  una situazione anomala, che si verifica generalmente per
  517. scarsitα di memoria. Personal Agent non verrα eseguito.
  518.  
  519.   "Non posso accedere a quest'oggetto (Forse non Φ un file ?)"
  520.  
  521. áá╚  stato  chiesto  a  Personal  Agent  di  esaminare  un'icona  che  non
  522. corrisponde ad un file, come l'icona di un disco o di un cassetto, o anche
  523. quella  di  un'altro  programma  che,  come  Personal Agent, risiede sullo
  524. schermo del Workbench.
  525.  
  526.   "Non posso accedere a "xxx" !"
  527.   "Non posso accedere a quest'oggetto !"
  528.  
  529. ááPer   qualche   motivo,   Personal   Agent  non  pu≥  accedere  al  file
  530. corrispondente all'icona fornitogli. Il file non potrα essere esaminato.
  531.  
  532.   "Non posso aprire "xxx" !"
  533.   "Non posso aprire quest'oggetto !"
  534.  
  535. ááAll'icona  fornita  corrisponde un file esistente, ma che non pu≥ essere
  536. aperto per la lettura. Il file non potrα essere esaminato.
  537.  
  538.   "Non posso eseguire "xxx", il sistema riporta:
  539.    yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
  540.  
  541. ááPersonal  Agent  ha riconosciuto il file associato all'icona fornitagli,
  542. ma  nel  tentativo  di  eseguire  il comando relativo "xxx", il sistema ha
  543. riscontrato  un errore. Una descrizione pi∙ dettagliata Φ fornita caso per
  544. caso.
  545.  
  546.   "Non posso aprire "xxx" per i risultati.
  547.    Controlla la linea OUTPUT=... nella mia icona."
  548.  
  549. ááIl  parametro  OUTPUT  specifica un file (o una CON:) che non pu≥ essere
  550. aperto.  Se si tratta di CON:, probabilmente c'Φ un errore nella sintassi,
  551. oppure le coordinate indicate giacciono fuori dallo schermo.
  552.  
  553. ááVi Φ infine un'altra serie di messaggi autoesplicativi, che riguardano i
  554. casi in cui un file non viene riconosciuto o, se riconosciuto, non Φ stata
  555. definita  alcuna  azione  corrispondente.  In questi casi non si tratta di
  556. errori, ma di formati non previsti nel programma FAM in uso.
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.          Appendice B - Sintassi del FAM
  564.         --------------------------------
  565.  
  566.   La sintassi del FAM viene data con una variante della notazione EBNF.
  567.  
  568. ááGli  spazi, i tab e i newline non sono significativi, e possono apparire
  569. in sequenze arbitrarie ovunque possa apparire un singolo spazio. Tutto ci≥
  570. che  non  Φ  compreso  fra  "CLASS" e "END", oppure fra "ACTION" e "END" Φ
  571. considerato  non  facente  parte  del  testo del programma - in pratica un
  572. commento.  I  delimitatori  "CLASS",  "ACTION"  e "END" devono apparire in
  573. maiuscolo, gli altri token del linguaggio (compresi gli identificatori e i
  574. pattern) sono case-insensitive.
  575.  
  576. ááEcco  infine  la sintassi: i non terminali sono racchiusi fra "<" e ">",
  577. il  simbolo  "<>"  indica  la  stringa  nulla, produzioni alternative sono
  578. separate  da  "|"  e  il  simbolo  di produzione Φ "::=". I terminali sono
  579. indicati  in maiuscolo, ma a parte che per CLASS, ACTION e END il case non
  580. Φ  significativo;  le  definizioni informali sono racchiuse fra "{" e "}".
  581.  
  582.  
  583.  <program> ::=        <stmt-list>
  584.    <stmt-list> ::=     <> | <stmt> <stmt-list>
  585.    <stmt> ::=          <class-def> | <action-def>
  586.  
  587.     <class-def> ::=     CLASS <class-name> HAS <or-pr-list> END
  588.      <class-name> ::=    {Identificatore}
  589.       <or-pr-list> ::=    <or-pred> | <or-pred> OR <or-pr-list>
  590.       <or-pred> ::=       NAME <pattern> | <and-pr-list>
  591.       <and-pr-list> ::=   <and-pred> | <and-pred> AND <and-pr-list>
  592.       <and-pred> ::=      <bytes> AT <offset>
  593.        <bytes> ::=         "<string>" | <byte> | "<string>" <bytes>
  594.                            | <byte> <bytes>
  595.        <string> ::=       {Una qualunque stringa ASCII, lunga fino a 255
  596.                            caratteri. Non pu≥ contenere '"'}
  597.        <byte> ::=         0x<HH> | 0<OOO> | $<HH> | %<BBBBBBBB> | <DDD>
  598.         <HH> ::=           {Al pi∙ due cifre esadecimali}
  599.         <OOO> ::=          {Al pi∙ tre cifre ottali, con un valore <256}
  600.         <BBBBBBBB> ::=     {Al pi∙ otto cifre binarie}
  601.         <DDD> ::=          {Ap pi∙ tre cifre decimali, con un valore <256}
  602.  
  603.     <action-def> ::=    ACTION <action> <class-name> IS <command> END
  604.      <action> ::=        {Identificatore}
  605.      <command> ::=       {Un comando AmigaDOS}
  606.  
  607.  
  608. Note:
  609. ááGli  identificatori  possono essere costituiti da una qualunque sequenza
  610. di  caratteri  ASCII,  eccettuati  spazio,  tab  e newline, ma Φ bene (per
  611. compatibilitα   futura)   che  essi  seguano  le  regole  usuali  per  gli
  612. identificatori:  una  lettera  o  _,  seguiti  da  un  qualunque numero di
  613. lettere,   cifre   o  _.  Formalmente,  usando  le  espressioni  regolari:
  614.  
  615.         Identificatore = [a-zA-Z_][a-zA-Z0-9_]*
  616.  
  617. ááInoltre, Φ da tener presente che al momento i <byte> espressi in binario
  618. non sono supportati e che l'unica <action> supportata Φ VIEW. Se il valore
  619. di  un  qualunque  <byte>  supera  255, esso viene preso modulo 256 (cioΦ,
  620. viene considerato soltanto il byte di ordine pi∙ basso).
  621.  
  622.  
  623.  
  624.  
  625.  
  626.          Appendice C - Sviluppi futuri e ringraziamenti
  627.         ------------------------------------------------
  628.  
  629. ááSi  prevedono alcuni cambiamenti al linguaggio FAM, giα anticipati nelle
  630. sezioni precedenti. Sarα possibile programmare diversi tipi di azioni, con
  631. le  diverse  icone  corrispondenti,  all'interno  di  un solo file FAM; si
  632. prevede  anche la possibilitα di associare un commento descrittivo ad ogni
  633. classe definita.
  634.  
  635. ááLa   prossima   versione   di   Personal  Agent  farα  uso  delle  nuove
  636. caratteristiche del Sistema Operativo per garantire un supporto in diversi
  637. linguaggi  senza  che  sia necessario preparare una versione specializzata
  638. del programma per ogni lingua supportata.
  639.  
  640. ááL'Autore  desidera  ringraziare  due altri membri del gruppo ICARUS, che
  641. hanno   grandemente   contribuito  alla  verifica  del  programma  e  alla
  642. preparazione della documentazione:
  643.  
  644.     Paolo Canali, che ha curato la versione tedesca, e
  645.     Roberto Rosselli, che ha curato quella francese.
  646.  
  647.