В данном разделе дается описание синтаксиса операторов языка Pascal.
SR11. <оператор>::= <оператор READ>
| <оператор WRITE>
| <оператор присвоения>
| <пустой оператор>
| <оператор BEGIN>
| <оператор IF>
| <оператор WHILE>
SR12. <оператор READ>::= READ (<список идентификаторов>)
SR13. <оператор WRITE>::= WRITE(<список write>)
| WRITELN (<список write>)
| WRITELN
SR14. <список write>::= <элемент write>
| <список write>, <элемент write>
SR15. <элемент write>::= <идентификатор>
| '<строка символов>'
SR16. <строка символов>::= <символ>
| <строка символов> <символ>
SR17. <символ>::= <буква> | <цифра> | <особый символ>
SR18 <особый символ>::= (|) | = | { | } |: |; | ’’ | < | > |, |. | #
Некоторые Паскаль-машины имеют больший набор специальных символов, но вышеупомянутых символов нам будет достаточно для CF-Pascal.
SR19. <оператор присвоения>::= <идентификатор>:= <выражение>
SR20. <выражение>::= <идентификатор>
| '<символ>'
SR21. <пустой оператор>::=
SR22. <оператор IF>::= IF <условие> THEN <оператор>
|
|
| IF <условие> THEN <оператор> ELSE <оператор>
SR23. <условие>::= <выражение> <сравнение > <выражение>
SR24. <сравнение>::= < | = | > | <= | <> | >=
SR25. <оператор WHILE>::= WHILE <условие> DO <оператор>
Комментарии в Паскаль-программах не упоминаются в синтаксических правилах BNF, поскольку они имеют особое правило:
Комментарий начинается со специального символа { и заканчивается }; между этими маркерами может встречаться любой символ. Комментарий может располагаться в любом месте синтаксически корректной программы, где может располагаться пробел, за исключением <строки символов> <элемента write>.
Паскаль-машина будет пытаться выполнить любую последовательность символов, соответствующую синтаксическим и контекстным правилам, считая ее Паскаль-программой. Однако синтаксически корректная программа может попасть в бесконечный цикл. Она может прерваться из-за того, что оператор READ требует данных больше, чем имеется, она может решить задачу ошибочно. Эти проблемы лежат вне синтаксиса, в области, называемой семантикой.