МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ РФ
НГТУ
Кафедра ВТ
Лабораторная работа №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 - выход и распознанный синтаксис.


