Непейвода Н.Н. Программирование. Раздел 4

Непейвода Н.Н. Программирование. Страница 468

Рассмотрим синтаксическое определение, порождающее простейшие вы­ражения языка С и оператор присваивания.

тогда как по определению (10.1) выражения с операциями одного уровня становятся правоассоциативными (сравните два вывода строки "аЬс" в двух грамматиках). Чуть ниже станет понятно, почему здесь выбраны "плохие" правила, а также разъяснено, как их можно чисто формально исправить. Важно подчеркнуть, что способ исправления демонстрирует метод работы безотносительно данного примера.

Система конечных автоматов для анализа контекстносвободных языков по их грамматике строится достаточно прямо. Для каждого нетерминаль­ного символа составляется таблица — диаграмма автомата, отражающая все варианты его работы. Так, для присваивания строится следующая диаграм­ма (см. таблицу 10.2). Первая строка таблицы — заголовок автомата. Она содержит имя автомата, по которому происходит обращение к нему (мы используем угловые скобки, чтобы выделить имена автоматов явно и под­черкнуть их связь с нетерминальными символами грамматики). Остальные строки таблицы описывают работу автомата.

Первая колонка используется для организации переходов между состо­яниями (аналог первой колонки таблицы 10.1). Изза простоты структуры получающихся таблиц надобность в явном именовании всех состояний каж­дого автомата отпадает: большинство переходов при синтаксическом анали­зе — это переходы к следующей строке, а для указания других переходов оказывается достаточно простых меток.

Вторая колонка, которая используется для задания так называемых коп ституент, т. е. составляющих синтаксического правила (терминальных и нетерминальных символов), аналогична второй колонке таблицы 10.1, т. е. условиям срабатывания переходов. Но здесь нецелесообразно задавать про­верки явно: само вхождение конституенты указывает на то, что надо срав­нить ее с символом входного потока или вызвать другой конечный автомат. В результате выполнения такого сравнения должен быть выработан один из трех исходов: Т, Е или Е. Три или два (для терминальных символов) ва­рианта исхода выделены как три подстроки таблицы с соответствующими пометками в третьей колонке.

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама