Home / Indice sezione
 www.icosaedro.it 

M2 Report

<= IntroduzioneUn semplice esempio =>
Frontespizio
Introduzione
Caratteristiche
Un semplice esempio
Moduli
Sezione IMPORT
Sezione CONST
Sezione TYPE
Tipo FORWARD
Sezione VAR
Sezione FUNCTION
Sezione BEGIN
Stringhe letterali
Sottostringhe
Commenti
Costanti predefinite
Variabili predefinite
Funzioni predefinite
Istruzione di assegnamento
Istruzione per la chiamata di funzione
Ordine di valutazione degli argomenti attuali
Istruzione IF
Istruzione SWITCH
Istruzione FOR
Istruzione WHILE
Istruzione REPEAT
Istruzione LOOP
Istruzione TRY
Istruzione RAISE ERROR
Istruzione RETURN
Espressioni logiche
Espressioni intere
Espressioni reali
Espressioni stringa
Espressioni tra tipi strutturati
Regole di scope
M2 per programmatori C
M2 per programmatori Java
Rappresentazione dei dati in memoria
Keywords
Messaggi di errore a runtime
Sintassi
 

Caratteristiche

Rissumiamo le caratteristiche principali del linguaggio M2:

  • M2 è un linguaggio compilato. Il risultato della compilazione è un programma direttamente eseguibile dal computer.
  • M2 è un linguaggio procedurale. Supporta le funzioni, le funzioni nidificate, la ricorsione e dispone delle istruzioni di controllo del flusso consuete (IF, FOR, WHILE, LOOP, ecc.).
  • L'allocazione delle variabili e delle strutture dati è automatica. Lo spazio occupato dai dati non più utilizzati dal programma viene recuperato e riutilizzato.
  • Le operazioni sugli array e sulle strutture dati dinamiche vengono controllate a tempo di esecuzione per rilevare l'accesso a dati non allocati e lo sforamento degli indici.
  • I tipi di dati semplici sono: BOOLEAN, INTEGER, REAL, STRING. Le stringhe possono avere lunghezza arbitraria e possono contenere qualsiasi codice. Il linguaggio permette di manipolare le stringhe, concatenarle, estrarne intervalli di caratteri definiti.
  • I tipi di dato strutturati sono gli ARRAY e i RECORD. Gli elementi degli array e i campi dei record possono a loro volta essere dei tipi strutturati: si possono costruire array di array, array di record, ecc. Lo spazio di memoria necessario viene allocato automanticamente non appena di assegna un elemento di un array o un campo di un record. Gli array hanno lunghezza dinamica e si estendono man mano che si assegnano nuovi elementi.
  • La dichiarazione TYPE permette di assegnare un nome a una nuova struttura dati. La struttura dati viene creata sfruttando i tipi base o altri tipi a suo tempo definiti.
  • Le funzioni accettano argomenti in un numero e tipo definito dalla loro dichiarazione. Non sono previste le funzioni con numero variabile di argomenti.
  • Le funzioni possono ritornare come valore un dato di tipo arbitrario, sia semplice che strutturato.
  • Il meccanismo della qualificazione dei nomi risolve il problema delle collisioni nello spazio dei nomi tra oggetti omonimi esportati da librerie diverse. La qualificazione dei nomi è facoltativa, e diventa obbligatoria solo in caso di collisione.
  • M2 supporta la notazione postfissa per invocare le funzioni: la chiamata f(x,y,z) può essere riscritta in modo equivalente come x->f(y,z). Questa possibilità ha interessanti conseguenze che vengono descritte.
  • I moduli di libreria si articolano in un DEFINITION MODULE che ne dichiara l'interfaccia, e in un IMPLEMENTATION MODULE che ne contiene il codice. Il modulo di definizione è anche un testo luogo deputato per contenere la documentazione utile per i suoi utilizzatori.
 
<= IntroduzioneUn semplice esempio =>

Umberto Salsi

Contatto
Mappa
Home / Indice sezione