Body dei Sorgenti C


Il sorgente, con l'eslusione della testata, viene esaminato e vengono trattati i tags di documentazione incontrati all'interno del sorgente. La scansione procede come segue:

  1. Si cerca un blocco di commento con tag.
  2. In base al tipo di tag decide il trattamento.
    1. Nel caso del Formato 1, ha terminato il trattamento.
    2. Nel caso del Formato 2, cerca un nuovo blocco di commento che contenga un tag di chiusura.
    3. Nel caso del Formato 3 cerca una graffa di apertura. Si osservi che questo formato viene gestito solo nei sorgenti 'C'. Negli altri sorgenti viene gestito come fosse un Formato 1.
  3. Tratta il tag.

Un blocco di commento con tag è un blocco di testo che prevede:

  1. Inizia con la stringa "/*".
  2. Dopo questa stringa possono seguire un qualunque numero di:
    1. Spazi.
    2. A capi.
    3. Asterischi
  3. Segue un tag di apertura nel formato "@nome" dove il nome è uno dei tag di apertura gestiti, v. Riepilogo dei Tag.
  4. Segue testo.
  5. Chiude con la stringa "*/".

Nella tabella che segue vi sono esempi di blocchi utilizzando il tag Cla:

/* @Cla ... */
/** @Cla ...**/
/**
****************************************************************************
@Cla 
...
****************************************************************************
**/

Il trattamento del tag riceve due blocchi di testo. Il primo blocco è il commento, è composto da tutto il testo contenuto nel commento di apertura. Il secondo blocco è il codice, che può essere presente o meno. Nel caso del formato 1 il codice è assente. Nel caso del formato 2 il codice comprende tutto il testo compreso tra il commento di apertura e il commento di chiusura. Nel caso del formato 3 il codice comprende tutto il testo incontrato fino alla graffa di apertura. Determinati il commento e il codice ciascuno viene trattato in sequenza.

Il commento contiene come abbiamo visto il tag di apertura. Contiene inoltre un insieme di diversi tag, che dipendono dal tag di apertura, che definiscono i campi da trattare. Il commento viene spezzato in sotto blocchi separati da stringhe del formato "@xxx" oppure "@/xxx". Si esamina lo spezzato e si genera una tabella che contiene per ciascun elemento due campi:

  1. Il tag, la stringa "@xxx".
  2. Il testo che segue il tag.

E' utile effettuare alcune precisazioni:

  1. Ad un tag è associato tutto il testo che lo segue fino alla chiusura del tag.
  2. Un tag si chiude:
    1. Automaticamente con il tag sucessivo.
    2. Se si incontra un tag di chiusura. Un tag di chiusura ha il formato "@/xxx". Il contenuto di xxx è libero, Si può matchare l'apertura, ad esempio "@Descr ... @/Descr". Si può inventare una chiusura generica "@Descr ... @/End". Il testo dopo una chiusura e prima della apertura sucessiva viene ignorato.
    3. Il testo è terminato. Si noti che la chiusura del commento e gli spazi, a capi o asterischi che lo precedono venono automaticamente eliminati.
  3. Se si vuole evitare il trattamento di un tag è sufficiente trasformarlo in una chiusura "@/xxx".
  4. Se si ha la necessità di inserire nel testo il carattere @ e si teme che possa essere trattato come un tag esistono due alternative: "@@" o "\@". Un carattere @ seguito da spazio o altra punteggiatura non verrà comunque trattato come tag.

Il codice subisce diversi possibili trattamenti. Diendono dal tipo di tag primario in esame:

  1. Viene ignorato se il tag primario non lo gestisce.
  2. Viene scandito alla ricerca del prototipo di una funzione 'C'. Questo trattamento è riservato al tag Fun.
  3. Viene incorporato nel documento, ad esempio il tag Cla.
  4. Viene parsato alla ricerca di dichiarazioni e/o incorporato nel documento, ad esempio il tag Dat. Si veda a riguardo Decl -- Dichiarazioni.
dsg.src.scan.c • LastModified: 14-9-2007 • John Peter Arnold