Программно-методический комплекс для обучения процессу создания компиляторов

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



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 Семантический анализ

Функции семантического анализатора:

  1. ведение табличных символов;
  2. включение неявной информации (по умолчанию);
  3. обнаружение ошибок;
  4. макрообработка и операции, выполняемые во время компиляции.

После проведения синтаксического анализа формируется дерево грамматического разбора, представленное в виде таблицы. По этому дереву на этапе семантического анализа производится новый смотр.

Одно из предназначений семантического анализатора поиск ошибок. Существуют следующие критерии поиска ошибок:

  1. не должно быть повторного описания идентификатора;
  2. все идентификаторы, используемые в программе, должны быть описаны;
  3. запрещается присвоение значению переменной одного типа значение другого типа (возможно только присвоение вещественному типу целого значения);
  4. результат деления тАЬ / тАЬ всегда вещественное число;
  5. перед использованием переменной (идентификатора) ей должно быть присвоено значение (данная ошибка не относится к критическим).
  6. Copyright © 2008-2014 geum.ru   рубрикатор по предметам  рубрикатор по типам работ  пользовательское соглашение