In de informatica en taalkunde worden terminale en niet-terminale symbolen gebruikt in de productieregels van een formele grammatica. De terminale symbolen vormen de symbolen in de strings die gegenereerd worden door de grammatica. De niet-terminale symbolen worden gebruikt om strings te vervangen door andere strings die bestaan uit terminale of niet-terminale symbolen. Zinnen in een formele taal worden gegenereerd door productieregels toe te passen op niet-terminale symbolen totdat de geproduceerde string geen niet-terminale symbolen meer bevat.
Voorbeelden
Voorbeeld 1
Stel we hebben een alfabet met de letters , en , het startsymbool en de volgende productieregels:
In deze grammatica zijn en de niet-terminale symbolen en , en de terminale symbolen.
Voorbeeld 2
Een ander voorbeeld, genoteerd in EBNF:
- Integer (-)? Digit+
- Digit 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
In deze grammatica zijn de terminale symbolen en de niet-terminale symbolen.