Проверим правильность грамматики на примере тестовой программы:
class class1
{
float w2;
char s2;
class1()
{
w2 <= 2.45;
s2 <= 'r';}
m1(int q1) {
float s2;
s2 <= w2 * q1 - 8;
return s2;}
m2(int r4, char d3) {
bool f3;
integ f4; f4<=2.1;
when (f4!=r4 && r4 >= 6х453)
then {f3 <= L_1;
repeat {int f5 <= m1(3); d3 <= d3+1;} when d3 <= 'e'}
else f3 <= L_0;
select f3
case L_1 return L_0;
case L_0 return L_1;
end}
}
class class2
{
integer d2;
bool s23;
class2(int g4, bool jj77)
{
d2 <= g4;
s23 <= jj77;}
mm1 (integ f55) {
float f3 <= f55 * 3.14;
when f3 <= 40 then f3 <= 50;
}
}
main()
{
inte p1;
o1 <= new class1 (3);
p1 <= o1.m1(14);
bool p2;
p2 <= o1.m2(p1,'e');
delete o1;
o2 <= new class2 (3,p2);
o2.mm1(5);
delete o2;
}
Выводы
В ходе выполнения 5-й лабораторной работы были изучены основные идеи и понятия нисходящих методов синтаксического анализа, выявлены свойства формальных грамматик, необходимых для реализации нисходящего восстановления дерева грамматического разбора, приобретены навыки построения процедурной и различных автоматных реализаций нисходящего анализа, исследованы поведения нисходящих синтаксических акцепторов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.