Скачиваний:
8
Добавлен:
01.05.2014
Размер:
60.93 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет

«ЛЭТИ»

Кафедр ВТ

Отчёт по

лабораторной работе № 2

“Построение функций ВЫБОР”

Выполнил:

Морозов С. А.

Гр.: 4331

Проверил:

Холод И.И.

Санкт – Петербург 2007 год.

Цель

По грамматике, которую нужно получить исходя из своего варианта, построить функцию ВЫБОР.

Задание

15.(Р) Последовательность описаний вложенных записей с полями типа (char, boolean) и операторов присваивания, в которых использованы вызовы процедур.

Текст построенной грамматики:

<I> ::= <struct><I> --

<I> ::= $ --

<struct> ::= s<struct1> --

<struct1> ::= t<struct2> --

<struct2> ::= r<struct3> --

<struct3> ::= u<struct4> --

<struct4> ::= c<struct5> --

<struct5> ::= t<struct6> --

<struct6> ::= _<name_struct>

<name_struct> ::= <name><body> --

<body> ::= {<body1> --

<body1> ::= <set_fields><end_struct>--

<end_struct> ::= }<end_struct1> --

<end_struct1> ::= ;<var> --

<set_fields> ::= <bool> <choice_type> --

<set_fields> ::= <char> <choice_type> --

<set_fields> ::= <my_type><choice_type> --

<set_fields> ::= $ --

<choice_type> ::= <bool> <choice_type> --

<choice_type> ::= <char> <choice_type> --

<choice_type> ::= <my_type><choice_type> --

<choice_type> ::= $ --

<my_type> ::= <name><end_type> --

<bool> ::= b<bool1> --

<bool1> ::= o<bool2> --

<bool2> ::= o<bool3> --

<bool3> ::= l<end_type> --

<char> ::= c<char1> --

<char1> ::= h<char2> --

<char2> ::= a<char3> --

<char3> ::= r<end_type> --

<end_type> ::= _<var_name> --

<var> ::= <name><list> --

<list> ::= =<proc_name> --

<proc_name> ::= <name><end_proc> --

<end_proc> ::= [<list_var> --

<list_var> ::= <var_name><next_var> --

<next_var> ::= <list_var> --

<next_var> ::= ]<end_var> --

<end_var> ::= ; --

<var_name> ::= <name>; --

<name> ::= <letter><name1> --

<name1> ::= <letter><name1> --

<name1> ::= <num><name1> --

<name1> ::= $ --

<num> ::= 0|1|2|3|4|5|6|7|8|9 --

<letter> ::= a|d|e|f|g|h|i|j|k|l|m|n --

<letter> ::= o|p|q|r|s|t|u|v|w|x|y|z –

Построенные функции ВЫБОР

Правило: Функция ВЫБОР:

1: ВЫБОР ( <I> --> <struct><I> ) = ПЕРВ( <struct><I> ) = ПЕРВ( s<struct><I> ) = s

2: ВЫБОР ( <I> --> $) = СЛЕД(<I>)

3: ВЫБОР ( <struct> --> s<struct1>) = ПЕРВ ( s<struct1> ) = s

4: ВЫБОР ( <struct1> --> t<struct2>) = t

5: ВЫБОР ( <struct2> --> r<struct3>) = r

6: ВЫБОР ( <struct3> --> u<struct4>) = u

7: ВЫБОР ( <struct4> --> c<struct5>) = c

8: ВЫБОР ( <struct5> --> t<struct6>) = t

9: ВЫБОР ( <struct6> --> _<name_struct>) = _

10: ВЫБОР ( <name_struct> --> <name><body>) = ПЕРВ (<name><body> ) = ПЕРВ ( <letter><name1><body> ) = a , …, z

11: ВЫБОР ( <body> --> {<body1>) = {

12: ВЫБОР ( <body1> --> <set_fields><end_struct>) = ПЕРВ (<set_fields><end_struct> ) =

ПЕРВ (bool><choice_type> ) U ПЕРВ ( <char><choice_type> ) U ПЕРВ ( <my_type><choice_type> ) U ПЕРВ ( { <end_struct1>) = a, …, z, {,

13: ВЫБОР ( <end_struct> --> }<end_struct1>) = ПЕРВ ( }<end_struct1> ) = }

14: ВЫБОР ( <end_struct1> --> ;<var>) = ;

15: ВЫБОР ( <set_fields> --> <bool><choice_type>) = ПЕРВ( b<bool1>< choice_type > ) = b

16: ВЫБОР ( <set_fields> --> <char><choice_type>) = c

17: ВЫБОР ( <set_fields> --> <my_type><choice_type>) = a, …, z

18: ВЫБОР ( <set_fields> --> $) = СЛЕД( <set_fields> ) = ПЕРВ(<end_struct>) = ПЕРВ( }<end_struct1>) = }

19: ВЫБОР ( <choice_type> --> <bool><choice_type>) = ПЕРВ( b<bool1><choice_type> ) = b

20: ВЫБОР ( <choice_type> --> <char><choice_type>) = c

21: ВЫБОР ( <choice_type> --> <my_type><choice_type>) = a, …, z

22: ВЫБОР ( <choice_type> --> $) = СЛЕД( <choice_type> ) = ПЕРВ( <bool><choice_type><end_struct> ) U

ПЕРВ( <char><choice_type><end_struct> ) U ПЕРВ( <my_type><choice_type><end_struct> ) =

ПЕРВ( <bool><choice_type>}<end_struct1> ) U ПЕРВ( <char><choice_type>}<end_struct1> ) U

ПЕРВ(<my_type><choice_type>}<end_struct1> ) = }

23: ВЫБОР ( <my_type> --> <name><end_type>) = а, …, z

24: ВЫБОР ( <bool> --> b<bool1>) = b

25: ВЫБОР ( <bool1> --> o<bool2>) = o

26: ВЫБОР ( <bool2> --> o<bool3>) = o

27: ВЫБОР ( <bool3> --> l<end_type>) = l

28: ВЫБОР ( <char> --> c<char1>) = c

29: ВЫБОР ( <char1> --> h<char2>) = h

30: ВЫБОР ( <char2> --> a<char3>) = a

31: ВЫБОР ( <char3> --> r<end_type>) = r

32: ВЫБОР ( <end_type> --> _<var_name>) = _

33: ВЫБОР ( <var> --> <name><list>) = ПЕРВ( <name><list> ) = ПЕРВ(<letter><name1><list>) = a, …, z

34: ВЫБОР ( <list> --> =<proc_name>) = =

35: ВЫБОР ( <proc_name> --> <name><end_proc> ) = a, …, z

36: ВЫБОР ( <end_proc> --> [<list_var> ) = [

37: ВЫБОР ( <list_var> --> <var_name><next_var> ) = a, …, z

38: ВЫБОР ( <next_var> --> <list_var> ) = a, …, z

39: ВЫБОР ( <next_var> --> ]<end_var> ) = ]

40: ВЫБОР ( <end_var> --> ; ) = ;

41: ВЫБОР ( <var_name> --> <name>; ) = a, …, z

42: ВЫБОР ( <name> --> <letter><name1> ) = a, ..., z

43: ВЫБОР ( <name1> --> <letter><name1> ) = a, …, z

44: ВЫБОР ( <name1> --> <num><name1> ) = 0, …, 9

45: ВЫБОР ( <name1> --> $ ) = СЛЕД( <name1> ) = ПЕРВ( ; ) U ПЕРВ( <end_proc> ) U ПЕРВ( <body> )

U ПЕРВ( <end_type> ) U ПЕРВ( <list> ) = ;, [, {, _, =

46: ВЫБОР ( <num> --> 0 ) = 0

47: ВЫБОР ( <num> --> 1 ) = 1

48: ВЫБОР ( <num> --> 2 ) = 2

49: ВЫБОР ( <num> --> 3 ) = 3

50: ВЫБОР ( <num> --> 4 ) = 4

51: ВЫБОР ( <num> --> 5 ) = 5

52: ВЫБОР ( <num> --> 6 ) = 6

53: ВЫБОР ( <num> --> 7 ) = 7

54: ВЫБОР ( <num> --> 8 ) = 8

55: ВЫБОР ( <num> --> 9 ) = 9

56: ВЫБОР ( <letter> --> a ) = a

57: ВЫБОР ( <letter> --> d ) = d

58: ВЫБОР ( <letter> --> e ) = e

59: ВЫБОР ( <letter> --> f ) = f

60: ВЫБОР ( <letter> --> g ) = g

61: ВЫБОР ( <letter> --> h ) = h

62: ВЫБОР ( <letter> --> i ) = i

63: ВЫБОР ( <letter> --> j ) = j

64: ВЫБОР ( <letter> --> k ) = k

65: ВЫБОР ( <letter> --> l ) = l

66: ВЫБОР ( <letter> --> m ) = m

67: ВЫБОР ( <letter> --> n ) = n

68: ВЫБОР ( <letter> --> o ) = o

69: ВЫБОР ( <letter> --> p ) = p

70: ВЫБОР ( <letter> --> q ) = q

71: ВЫБОР ( <letter> --> r ) = r

72: ВЫБОР ( <letter> --> s ) = s

73: ВЫБОР ( <letter> --> t ) = t

74: ВЫБОР ( <letter> --> u ) = u

75: ВЫБОР ( <letter> --> v ) = v

76: ВЫБОР ( <letter> --> w ) = w

77: ВЫБОР ( <letter> --> x ) = x

78: ВЫБОР ( <letter> --> y ) = y

79: ВЫБОР( <letter> --> z ) = z

Вывод

В данной работе мы построили LL(1) – грамматику, в соответствии с вариантом задания.

Получили функцию ВЫБОР. Продолжили ознакомление с программой ОСА(Учебная САПР Трансляторов).

Соседние файлы в папке Лаб2