МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ РФ

НГТУ

Кафедра ВТ

Лабораторная работа №4

по дисциплине

«Теория языков программирования и методы трансляции»

Восходящий синтаксический

анализ методом «свертка-перенос»

Факультет: АВТ

Группа: АП-618

Вариант: 9

Выполнили:

Преподаватель:

Новосибирск, 2008
 

1. Задание

Разработать LR(1)-грамматику:

9. Си-грамматика контекстного определения переменных и определения функций.

Описание грамматики

Z:S#

S:SY

S:Y

Y:TR;

Y:VR;

Y:GR;

Q:*Q

R:Q

Q:P

P:P[]

P:P()

P:P(M)

P:P(LM)

P:P(KM)

P:P(TR)

P:P(VTR)

P:P(WTR)

P:P{S}

P:a

P:(R)

W:VTR,

W:WTR,

V:TR,

G:VR,

G:GR,

T:M_

T:void_

M:int

K:LM,

K:KM,

L:M,

#

;

*

[

]

(

)

{

}

a

,

_

v

o

i

d

n

t

#

;

*

[

=

]

(

=

)

{

}

a

,

_

v

=

o

=

i

=

=

d

=

n

=

t

Z

S

=

=

Y

Q

R

=

=

=

P

=

=

=

W

V

G

T

M

=

=

=

K

L


Примеры с ошибками:

int_a((;

стек:TP((

ошибка:Нет отношения ( и (

int_a(){a();};

стек:TP{

ошибка:Нет отношения { и a

int_a

стек:Ta

ошибка: неожиданный конец строки


1. Имеются сложно различимые синтаксисы: а). тип Т со списком термов (*,[],()) разделенных запятыми и ограниченный точкой с запятой и б). список формальных параметров из пар тип-терм, разделенных запятыми.

2. Автоматная модель – цепочка состояний (нетерминалов)

3. по первому состоянию не можем точно опредилить какой это вид синтаксиса, поэтому вводится доп. Нетерминал V который «проглатывает» следующую цепочку и делает вывод, с каким синтаксисом работаем. Нетерминалы W u G обеспечивают повторяемость цепочки а P и Y - выход и распознанный синтаксис.