Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2008-04-14-02-21-Наталья-.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
825.86 Кб
Скачать
    1. Разбиение исходной грамматики на подграмматики.

Разбиение грамматики на подграмматики позволит использовать заданный метод синтаксического анализа, но усложнит описание и реализацию этого перевода, поскольку после разбиения перевод будет описываться с помощью нескольких взаимосвязанных атрибутных транслирующих грамматик.

При разбиении грамматики на подграмматики нужно учитывать следующее:

              1. Совокупности выделенных из грамматики взаимосвязанных правил должна представлять собой КС-грамматику.

              2. Основной символ подграмматики становится (специальным) терминальным символом исходной грамматики.

              3. Если множество нетерминальных символов подграмматики и модифицированной исходной грамматики не пересекаются, то синтаксический анализ для каждой из них может быть реализован отдельного процессора с магазинной памятью.

Выделим следующие подграмматики:

  • Основная подграмматика.

  • Подграмматика выражений.

  • Подграмматика логических выражений.

  • Подграмматика операторов.

  • Подграмматика типов.

  • Подграмматика переменных.

Основная подграмматика

Таблица нетерминалов

Имя нетерминала

Описание

P

Программа

DVA

Объявления переменных

DVE

Объявления векторов

COP

Составной оператор

Л А Б О Р А Т О Р Н А Я Р А Б О Т А # 2

" Ввод, преобразование и анализ КС-грамматик "

Студент : КИТАЕВА Н.А. , группа : 4342 .

Сеанс : 16.12.07 , 23:41 .

Файл : "1.TXT" .

ГРАММАТИКА 1.

Терминалы :

voi = void ; mai = main ; = ;

= ; ; = ; Dev = ;

Cop = ;

Нетерминалы :

P = prog 1 ; Dva = DeclarVar 3 ;

Dve = DeclarVector 2 ;

Правила :

1) P -> voi mai Dva

2) Dva -> Dev ; Dva

3) Dva -> Dve

4) Dva -> Cop

5) Dve -> Dev ; Dve

6) Dve -> Cop

Обработка грамматики возможна;

Конец.

Подграмматика выражений

Таблица нетерминалов

Имя нетерминала

Описание

EX

Выражение

SAE

Последовательность слагаемых

AE

Слагаемое

ME

Множитель

SME

Последовательность множителей

VEC

Вектор

VAR

Переменная

Л А Б О Р А Т О Р Н А Я Р А Б О Т А # 2

" Ввод, преобразование и анализ КС-грамматик "

Студент : КИТАЕВА Н.А. , группа : 4342 .

Сеанс : 16.12.07 , 23:41 .

Файл : "2.TXT" .

ГРАММАТИКА 2.

Терминалы :

+ = ; - = ; ++ = ;

-- = ; ~ = ; Vec = ;

/ = ; ( = ; ) = ;

Var = ;

Нетерминалы :

EX = 1 ; Exs = 5 ;

Sae = 2 ; Ae = 1 ;

Sme = 2 ; Me = 2 ;

Правила :

1) EX -> Exs Sae

2) Exs ->

3) Exs -> ++ Ae

4) Exs -> -- Ae

5) Exs -> Ae

6) Exs -> ~ Vec

7) Sae -> + Ae Sae

8) Sae -> - Ae Sae

9) Ae -> Me Sme

10) Sme -> / Me Sme

11) Sme ->

12) Me -> ( EX )

13) Me -> Var

Обработка грамматики возможна;

Конец.

Подграмматика логических выражений

Таблица нетерминалов:

Имя нетерминала

Описание

LEX

Логическое выражеие

EXP

Выражение

С

Конъюнкция

SC

Последовательность конъюнкций

REL

Отношение

LM

Логический множитель

SLM

Последовательность логических множителей

REO

Операция отношения

Л А Б О Р А Т О Р Н А Я Р А Б О Т А # 2

" Ввод, преобразование и анализ КС-грамматик "

Студент : КИТАЕВА Н.А. , группа : 4342 .

Сеанс : 16.12.07 , 23:41 .

Файл : "3.TXT" .

ГРАММАТИКА 3.

Терминалы :

or = ; ( = ; ) = ;

not = ; Exp = ; < = ;

> = ; == = ; <= = ;

>= = ; != = ;

Нетерминалы :

Lex = 2 ; Sc = 2 ;

C = 1 ; SLM = 1 ;

LM = 2 ; Rel = 1 ;

Reo = 6 ;

Правила :

1) Lex -> C Sc

2) Lex -> Rel

3) Sc -> or C Sc

4) Sc ->

5) C -> LM SLM

6) SLM ->

7) LM -> ( Lex )

8) LM -> not LM

9) Rel -> Exp Reo

10) Reo -> < Exp

11) Reo -> > Exp

12) Reo -> == Exp

13) Reo -> <= Exp

14) Reo -> >= Exp

15) Reo -> != Exp

Обработка грамматики возможна;

Конец.

Подграмматика для операторов

Таблица нетерминалов

Имя нетерминала

Описание

COP

Составной оператор

OP

Оператор

ULO

Непомеченный оператор

SOP

Последовательность операторов

EQO

Оператор присваивания

IFO

Условный оператор

LEX

Логическое выражение

VAR

Переменная

EQS

Отношение присваивания

EXP

Выражение

Л А Б О Р А Т О Р Н А Я Р А Б О Т А # 2

" Ввод, преобразование и анализ КС-грамматик "

Студент : КИТАЕВА Н.А. , группа : 4342 .

Сеанс : 16.12.07 , 23:41 .

Файл : "4.TXT" .

ГРАММАТИКА 4.

Терминалы :

Var = ; got = ; ID = ;

if = ; L = ; els = ;

cin = ; >> = ; cou = ;

<< = ; = = ; E = ;

+= = ; -= = ; *= = ;

/= = ; ; = ; : = ;

( = ; ) = ; ? = ;

Нетерминалы :

ULO = 6 ; EQO = 1 ;

Lab = 1 ; Elo = 2 ;

EQS = 5 ; Sop = 2 ;

Cop = 1 ; op = 2 ;

Правила :

1) ULO -> EQO

2) ULO -> got Lab

3) ULO -> if ( L ) Cop Elo

4) ULO -> cin >> Var

5) ULO -> cou << Var

6) ULO -> L ? E : E

7) EQO -> Var EQS

8) Lab -> ID

9) Elo -> els Cop

10) Elo ->

11) EQS -> = E

12) EQS -> += E

13) EQS -> -= E

14) EQS -> *= E

15) EQS -> /= E

16) Sop -> op ; Sop

17) Sop ->

18) Cop -> Sop

19) op -> Lab : ULO

20) op -> ULO

Обработка грамматики возможна;

Конец.

Подграмматика типов

Таблица нетерминалов

Имя нетерминала

Описание

BAS

Базовый тип

DEV

Объявление переменной

LETTER

Буква

SNL

Последовательность букв или цифр

NUMBER

Число

DVE

Объявление вектора

D

Размерность вектора

NNUM

Последовательность цифр

NATNUM

Натуральное число

IDENT

Индентификатор

Л А Б О Р А Т О Р Н А Я Р А Б О Т А # 2

" Ввод, преобразование и анализ КС-грамматик "

Студент : КИТАЕВА Н.А. , группа : 4342 .

Сеанс : 16.12.07 , 23:41 .

Файл : "5.TXT" .

ГРАММАТИКА 5.

Терминалы :

V = ; int = ; flo = ;

boo = ; vec = ; [ = ;

] = ; ; = ; CI = ;

Нетерминалы :

Dev = 1 ; bas = 3 ;

Dve = 2 ; D = 1 ;

Правила :

1) Dev -> bas V

2) bas -> int

3) bas -> flo

4) bas -> boo

5) Dve -> vec V [ D ] ; Dve

6) Dve ->

7) D -> CI

Обработка грамматики возможна;

Конец.

Подграмматика переменных

Таблица нетерминалов

Имя нетерминала

Описание

VAR

Переменная

IDE

Идентификатор

VEC

Вектор

ELE

Элемент вектора

SEL

Последовательность элементов вектора

SEN

Запись индекса элемента, если он есть

IND

Значение индекса элемента

CI

Целое число

CF

Вещественное число

Л А Б О Р А Т О Р Н А Я Р А Б О Т А # 2

" Ввод, преобразование и анализ КС-грамматик "

Студент : КИТАЕВА Н.А. , группа : 4342 .

Сеанс : 16.12.07 , 23:41 .

Файл : "6.TXT" .

ГРАММАТИКА 6.

Терминалы :

Ide = ; [ = ; ] = ;

, = ; CF = ; CI = ;

Нетерминалы :

var = 3 ; Sel = 2 ;

Ele = 2 ; Sen = 2 ;

Ind = 1 ;

Правила :

1) var -> Ide

2) var -> [ Ele Sel ]

3) var -> CI

4) Sel -> , Ele Sel

5) Sel ->

6) Ele -> Ide Sen

7) Ele -> CF

8) Sen -> [ Ind ]

9) Sen ->

10) Ind -> CI

Обработка грамматики возможна;

Конец.