Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


CR1. Все идентификаторы в разделе объявлений должны быть уникальными.




CR2. Ни одно из зарезервированных слов, например IF, WHILE, и т.д. не могут быть использованы в качестве идентификаторов. (Список зарезервированных слов будет дан позднее)

Рисунок 5 показывает, что VAR Ch: CHAR является <разделом объявлений>

 

Рис. 5. Синтаксическое дерево для <раздела объявлений>

Синтаксис оператора BEGIN задается синтаксическими правилами 9, 10 и контекстным правилом 3

SR9. <оператор BEGIN>::= BEGIN <список операторов> END

SR10. <список операторов>::= <оператор>

| <список операторов>; <оператор>

CR3. Любой идентификатор в операторе, отличный от стандартных идентификаторов вроде READ, WRITE и т.д. должен присутствовать в <списке идентификаторов> <раздела объявлений>.

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

 






Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 549 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

2259 - | 2110 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.016 с.