Compilazione in java
Sto ripassando un po' per l'esame di Fondamenti I e non ho trovato alcune definizioni che mi interesserebbero in questo momento, o meglio le ho trovate ma sono troppo tecniche e difficili da comprendere a mio parere.
Praticamente volevo chiedere se qualcuno mi può definire in maniera semplice i 3 concetti di:
-Analisi Lessicale
-Analisi Sintattica
-Analisi Semantica
che avvengono durante la compilazione di un programma(nello specifico di un applicazione scritta in Java)
Grazie!
Praticamente volevo chiedere se qualcuno mi può definire in maniera semplice i 3 concetti di:
-Analisi Lessicale
-Analisi Sintattica
-Analisi Semantica
che avvengono durante la compilazione di un programma(nello specifico di un applicazione scritta in Java)
Grazie!
Risposte
la sintassi di un linguaggio si occupa della forma delle frasi del linguaggio, cioè
delle regole (grammaticali) che possono essere usate per costruire le frasi del
linguaggio
– frase → soggetto verbo complemento-oggetto
– soggetto → il cane
– verbo → mangia
– complemento-oggetto → un osso
la semantica di un linguaggio si occupa del significato delle frasi.
Anche per il linguaggio Java si può parlare di
-sintassi: la grammatica di Java, cioè l’insieme delle regole grammaticali da usare per
scrivere correttamente i programmi Java
– semantica: descrizione del significato — cioè dell’effetto — dei programmi Java.
Similmente a quanto avviene con gli altri linguaggi di programmazione, la sintassi di
Java è descritta da una grammatica composta da
– elementi terminali — le parole e i simboli che possono comparire nei programmi
Java
• class public . ; : { } a b c d ... 0 1 2 ...
– elementi non terminali — le categorie sintattiche, utilizzate per la descrizione dei
programmi Java — ma che non compaiono nei programmi
• classe metodo istruzione invocazione-di-metodo
– produzioni — le regole grammaticali, che dicono come ciascun non terminale
possa essere espanso
– assioma — l’elemento non terminale iniziale, che guida la scrittura di un intero
programma Java
• unità-di-compilazione.
La semantica di Java può essere descritta anche in riferimento alla sintassi del
linguaggio
Ad esempio, la semantica di questa istruzione corrisponde all’invocazione di un metodo:
equazioneDiSecondoGrado.risolviti();
– la semantica dell’invocazione di un metodo corrisponde alla semantica
dell’esecuzione delle istruzioni definite in corrispondenza al metodo.
Io direi che una descrizione informale della semantica è spesso sufficiente, soprattutto per fondamenti I.
Per quanto concerne l'analisi lessicale non ne ho mai sentito dire. Ad ogni modo, credo che riguardi i nomi
dati ai vari "elementi" Java: ad esempio i nomi dei metodi iniziano sempre per lettera minuscola, quelli
delle classi per maiuscola. Oppure, quando hai bisogno di un metodo che ritorni un valore
caratteristico di un'istanza di una certa classe, in genere lo chiami getValore().
Lo stesso per un metodo che modifichi tale valore caratteristico, che in genere
è denominato setValore(). Altro esempio: la classe test viene chiamata
in genere TestClasseDaTestare... spero di essere stato chiaro.
delle regole (grammaticali) che possono essere usate per costruire le frasi del
linguaggio
– frase → soggetto verbo complemento-oggetto
– soggetto → il cane
– verbo → mangia
– complemento-oggetto → un osso
la semantica di un linguaggio si occupa del significato delle frasi.
Anche per il linguaggio Java si può parlare di
-sintassi: la grammatica di Java, cioè l’insieme delle regole grammaticali da usare per
scrivere correttamente i programmi Java
– semantica: descrizione del significato — cioè dell’effetto — dei programmi Java.
Similmente a quanto avviene con gli altri linguaggi di programmazione, la sintassi di
Java è descritta da una grammatica composta da
– elementi terminali — le parole e i simboli che possono comparire nei programmi
Java
• class public . ; : { } a b c d ... 0 1 2 ...
– elementi non terminali — le categorie sintattiche, utilizzate per la descrizione dei
programmi Java — ma che non compaiono nei programmi
• classe metodo istruzione invocazione-di-metodo
– produzioni — le regole grammaticali, che dicono come ciascun non terminale
possa essere espanso
– assioma — l’elemento non terminale iniziale, che guida la scrittura di un intero
programma Java
• unità-di-compilazione.
La semantica di Java può essere descritta anche in riferimento alla sintassi del
linguaggio
Ad esempio, la semantica di questa istruzione corrisponde all’invocazione di un metodo:
equazioneDiSecondoGrado.risolviti();
– la semantica dell’invocazione di un metodo corrisponde alla semantica
dell’esecuzione delle istruzioni definite in corrispondenza al metodo.
Io direi che una descrizione informale della semantica è spesso sufficiente, soprattutto per fondamenti I.
Per quanto concerne l'analisi lessicale non ne ho mai sentito dire. Ad ogni modo, credo che riguardi i nomi
dati ai vari "elementi" Java: ad esempio i nomi dei metodi iniziano sempre per lettera minuscola, quelli
delle classi per maiuscola. Oppure, quando hai bisogno di un metodo che ritorni un valore
caratteristico di un'istanza di una certa classe, in genere lo chiami getValore().
Lo stesso per un metodo che modifichi tale valore caratteristico, che in genere
è denominato setValore(). Altro esempio: la classe test viene chiamata
in genere TestClasseDaTestare... spero di essere stato chiaro.
Grazie 1000 per l'aiuto!