Elementi di un linguaggio

Un linguaggio può essere descritto completamente se affrontato in più livelli:

Nel caso dei linguaggi di programmazione occorre poi aggiungere un quarto livello di analisi:

Grammatica e sintassi

A differenza dei linguaggi naturali, i linguaggi di programmazione possono disporre di un lessico costituito da un numero infinito di parole. Per poter descrivere in maniera efficace un simile lessico si utilizzano le grammatiche generative (in parte già affrontate in logica).

Grammatica libera da contesto

Una grammatica libera da contesto è una quadrupla ($NT, T, R, S$) dove:

Inoltre, data una grammatica libera da contesto, si dice che:

Da $v$ si deriva immediatamente $w$ (e lo denoto con $v\rarr w$) se:

$$ v = xAy \qquad (A\rarr z)\in R \qquad w= xzy \qquad x,y,z\in(T\cup NT) $$

Lo si può dire anche se la sostituzione $A\rarr z$ viene svolta in più passi.