Программно-методический комплекс для обучения процессу создания компиляторов
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
28+93$1,2894421631ЛЦ1НС172@18,2181Продолжение таблицы 13
ШагиТаблица кодов лексемИмя в программеЭлемент грамматики БНФРезультат сравненияФормируемая таблица переходовВыполненное действиетекущая позицияследующая позицияпозициятаблкод, специфтипимятекущая конструкциятиптаблкод
(для ТС)строкастолбецвносимое значениестрокастолбец79181@17,3182802122ИДаidТС13310511625127ТС;105101конец конструкции11725127ТС;10195переходПродолжение таблицы 13
ШагиТаблица кодов лексемИмя в программеЭлемент грамматики БНФРезультат сравненияФормируемая таблица переходовВыполненное действиетекущая позицияследующая позицияпозициятаблкод, специфтипимятекущая конструкциятиптаблкод
(для ТС)строкастолбецвносимое значениестрокастолбец11825127ТС;ТС130+19$1,3011012711011конец конструкции12811
Таблица 14 Формируемая таблица переходов
123456789101PROGRAM
$1,1
@2,2VAR
$1,2
@3,2BEGIN
$1,3
@7,2END
$1,4.
$1,302@1,4prog1
$2,1;
$1,273
@4,2;
$1,274
@5,2:
$1,31
@6,25@4,3a
$2,2,
$1,29b
$2,3,
$1,29c
$2,46@4,5INTEGER
$1,57
@8,2;
$1,278
@9,29@8,3a
$2,2:=
$1,28
@10,210
@11,2+
$1,32
@13,211
@12,212@11,31
$3,113
@14,2*
$1,34
@15,214@13,3b
$2,315@13,5(
$1,35
@16,2)
$1,3616
@17,2
$1,33
@19,217
@18,218@17,3a
$2,219
@20,220@19,3c
$2,42.4.6 Построение деревьев
Для наглядного отображения полученных грамматик используют синтаксические деревья, пример показан на рисунке 3.
На основе введенных значений формируемой таблицы переходов в программу SINAN строится (формируется) синтаксическое дерево (дерево грамматического разбора).
Деревья могут быть представлены в вертикально как показано на рисунке 5, а и горизонтально рисунок 5, б.
Рассмотрим выражение: a := c (1 + b)
а)
б)
Рисунок 5 а) вертикальное дерево, б) горизонтальное дерево
Рисунок 6 Горизонтальное синтаксическое дерево
На рисунке 6 показано горизонтальное синтаксическое дерево, построенное по следующей программе:
PROGRAM prog1;
VAR a,b:INTEGER;
s:STRING;
BEGIN
b:=78;
s:=Дерево;
WRITE(s);
a:=b*(2+a);
END.
2.4.7 Семантический анализ
Функции семантического анализатора:
- ведение табличных символов;
- включение неявной информации (по умолчанию);
- обнаружение ошибок;
- макрообработка и операции, выполняемые во время компиляции.
После проведения синтаксического анализа формируется дерево грамматического разбора, представленное в виде таблицы. По этому дереву на этапе семантического анализа производится новый смотр.
Одно из предназначений семантического анализатора поиск ошибок. Существуют следующие критерии поиска ошибок:
- не должно быть повторного описания идентификатора;
- все идентификаторы, используемые в программе, должны быть описаны;
- запрещается присвоение значению переменной одного типа значение другого типа (возможно только присвоение вещественному типу целого значения);
- результат деления тАЬ / тАЬ всегда вещественное число;
- перед использованием переменной (идентификатора) ей должно быть присвоено значение (данная ошибка не относится к критическим). Copyright © 2008-2014 geum.ru рубрикатор по предметам рубрикатор по типам работ пользовательское соглашение