Linguaggio in forma liberaUn linguaggio in forma libera è un linguaggio di programmazione la cui sintassi non è influenzata dal particolare posizionamento dei caratteri nel codice sorgente. Nei moderni linguaggi in forma libera infatti il codice tipicamente non è costretto a particolari regole d'incolonnamento (come avveniva invece per i programmi scritti su schede perforate) e l'uso dei caratteri di whitespace (spazio, ritorno a capo e tabulazione) è libero da particolari vincoli.[1] Molti linguaggi discendenti da ALGOL sono in forma libera, tra i quali C, Pascal e Perl. Anche il Lisp e i linguaggi da esso derivati sono in forma libera. Rexx è in buona parte in forma libera, tranne alcuni casi nei quali gli spazi fungono da operatore di concatenazione. Anche il linguaggio SQL, utilizzato per le basi di dati, è in forma libera. Molti linguaggi in forma libera sono anche strutturati, anche se ad esempio il Fortran 77 riserva delle colonne ai numeri di riga. Esistono anche linguaggi strutturati che non sono in forma libera, come ad esempio COBOL, Ruby, ABC, Curry, Haskell e Python, molti dei quali usano l'indentazione per determinare i blocchi di codice.[2][3] In alcuni linguaggi in forma libera, come il C, esistono comunque dei casi particolari nei quali l'uso del whitespace è limitato o può alterare la semantica. Ad esempio, in C, le macro dichiarate con z = x++ + ++y;
è sintatticamente valida, ma togliendo gli spazi tra gli operatori diventa invalida in quanto il parser, per via del maximal munch, la interpreterà come z = x++ ++ + y
che non è valida in quanto il valore di ritorno del primo operatore z = x / *y;
Anche in questo caso, se si rimuove lo spazio tra l'operatore di divisione e l'operatore di dereferenziazione la sintassi cambia, in quanto Note
|