Loomuliku keele lausest ja programmeerimiskeeles kirjutatud programmist saame me aru sellepärast, et me tunneme ära nende struktuuri, süntaksi. Süntaksi abil saame me aru, kes/mis on lauses tegija (alus) ja mida see/ta teeb, s.t. kus on öeldis, kuidas tegijat on iseloomustatud (milline on täiend) ja kuidas tegevus toimus (määrus). Täpselt samuti määrab programmi süntaks, milliseid operatsioone tuleb sooritada ja millisele muutujale tulemus tulemus omistada. Nii loomuliku keele teksti kui ka programmeerimiskeeles kirjutatud programmist "arusaamine" põhineb vaid süntaksil.
Loomuliku keele teksti süntaksit võib kirjeldada nii:
Tekst Lause | Lause
Tekst
-- s.t. tekst koosneb ühest või
enamast lausest
Lause Aluserühm Öeldiserühm
-- s.t. lause koosneb aluserühmast ja
sellele järgnevast öeldiserühmast
Aluserühm Alus | Täiend Alus
-- s.t. aluserühm on kas lihtsalt alus
või alus koos eelneva täiendiga
Alus Nimisõna
Täiend Omadussõna
Öeldiserühm Öeldis |
Öeldis Määrus
Öeldis Tegusõna
Määrus Määrsõna
Nimisõna "auto" | "poiss" |
"päike" | "elevant" | "kurk" | "idee" | "ideed" ...
Omadussõna "roheline" |
"värvitu" | "värvitud" | "suur" | "ilus" | "piklik" | ...
Tegusõna "sõidab" |
"jookseb" | "laulab" | "magavad" | "loeb" | "sajab" | ...
Määrsõna "kiiresti" |
"ruttu" | "kaua" | "rõõmsalt" | "raevukalt" | "ilusasti"
| ...
Sellise "ülalt-alla" kirjelduse (grammatika) reegleid rahuldavad näiteks laused :
Suur poiss jookseb kiiresti
Sinine auto sõidab ilusasti
Piklik päike sajab kiiresti
Värvitud rohelised ideed magavad raevukalt
Viimane lause on vaba tõlge Chomsky kuulsast näitest Colorless green ideas sleep furiously - lause, millega ta illustreeris oma meetodi piiratust ja mis hiljem on olnud arvukate arutluste, paroodiate, poeemide jne lähtekohaks. Sellise süntaktiliselt korrektse, kuid semantiliselt (tähenduslikult) mõttetu lause esitas juba paarkümmend aastat varem eesti kirjanik Eduard Vilde : "Jänesed jooksevad vihmaveetorusid mööda igaviku poole, murumunad suus".- vorm (süntaks) on korrektne, kuid tähendust (semantikat) pole üldse.
On selge, et ülaltoodud reeglid kirjeldavad vaid lausete süntaksit, vormilist korrektsust, mitte nende sisulist (semantilist) korrektsust. Semantika, s.t. lause sisust aru saamine on osutunud nii suureks probleemiks, et peale ulmefilmi arvuti HAL ei tule ükski arvuti sellega veel toime.
Analoogiliselt võib kirjeldada programmeerimiskeele süntaksit. Järgnevas on esitatud väga lihtsa programmeerimiskeele Pisi-Algoli süntaksi kirjeldus.
Programm
Käsk;
Programm
Käsk; Programm
-- programm on kas üksainus käsk
või käsk ja sellele järgnev samasuguse süntaksiga
jada, s.t. käskude jada
Käsk
Omistamine |Tingimuskäsk
|Tsükkel | Kirjutamine | Lugemine
Omistamine
Identifikaator := Avaldis
Identifikaator
Täht |
Indentifikaator Täht | Identifikaator Number
-- identifikaator algab tähega ja selle
järel võib olla ükskõik kui palju tähti
või numbreid
Avaldis
Identifikaator | Konstant|
Identifikaator Operand Avaldis | (Avaldis)
-- avaldis on kas üksainus identifikaator
või arvkonstant või identifikaator ja sellele
järgnev (binaarne) operand ja (alam)avaldis; avaldis võib
olla ka sulgudesse võetud (teine) avaldis
Konstant
Number | Number Konstant
Number 0| 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8
| 9
Täht A |
B | C | D | E | F | G | H
| I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
--Konstandid on vaid täisarvud ja lubatud on
vaid suurtähed!
Operand + | -
| * | /
--Operandid on vaid neli aritmeetilist tehet!
Tingimuskäsk IF tingimus THEN
programm ENDIF
Tingimus
Avaldis Tingimusop Avaldis
Tsükkel
WHILE tingimus DO Programm ENDLOOP
Tingimusop = | > | <
Kirjutamine
PRINT Identifikaator
Lugemine READ
Identifikaator
Lihtne on kontrollida, et järgnev programm (see arvutab N-da Fibonacci arvu F2) rahuldab selle keele süntaksireegleid:
READ N;
F0 := 0;
F1 := 1;
WHILE I < N DO
F2 := F0 + F1;
F0 := F1;
F1 := F2;
ENDLOOP;
PRINT F2;
IF X > 0 THEN IF Y > X THEN Z = X + Y ELSE Z = Y / 2