Синтаксис операторов языка CF-Pascal

В данном разделе дается описание синтаксиса операторов языка 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 требует данных больше, чем имеется, она может решить задачу ошибочно. Эти проблемы лежат вне синтаксиса, в области, называемой семантикой.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: