Содержание
- 2. Напомним, что КС-грамматика G является неоднозначной, если существует цепочка w ∈ L(G), имеющая два или более
- 3. Пример 13.1. Самый известный пример неоднозначности в языках программирования - это "кочующее else". Рассмотрим грамматику с
- 4. и S ⇒ if b then S ⇒ if b then if b then S else
- 5. Пример 13.2. Построим эквивалентную грамматику для грамматики примера 13.1. S1 → if b then S1 S1
- 6. Общего алгоритма, выясняющего, однозначна ли грамматика, не существует. Приведем несколько наиболее распространенных конструкций, приводящих к неоднозначности,
- 7. или A → DA A → D D → a 2. Следующий пример правил, приводящих к
- 8. 4. Еще один пример неоднозначной грамматики A → aAbA A → aA Во всех рассмотренных случаях
- 9. Определение 13.1 КС-язык называется существенно неоднозначным, если он не порождается никакой однозначной КС-грамматикой. В примере 8.1.приведена
- 10. Теорема 13.1 Проблема, однозначна ли КС-грамматика, неразрешима. Рассмотрим еще один пример грамматики, порождающей оператор присваивания (приведем
- 11. → 2 → → → → → ( ) Легко видеть, что данная грамматика является неоднозначной.
- 12. → := → → А → 1 → 2 → → ( )
- 13. Первая грамматика содержит нетерминальные символы, определяющие "смысл" идентификатора, во второй грамматике "смысл" отсутствует. Тем не менее,
- 14. (1) Контекстные условия о правилах описания идентификаторов в программах. Сюда относятся контекстные условия следующих типов: все
- 15. (2) Контекстные условия о правилах использования идентификаторов в своей области действия, т.е. контекстные условия, задающие соответствие
- 16. (3) Контекстные условия, определяющие правила соответствия видов величин, входящих в синтаксические конструкции программ. Сюда относятся контекстные
- 17. (4) Контекстные условия, задающие различные количественные ограничения, их обычно называют ограничениями реализации. Сюда можно отнести контекстные
- 19. Скачать презентацию