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

Федеральное агентство по образованию РФ

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

«ЛЭТИ»

Кафедра ВТ

Отчет

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

«Анализ грамматики».

Выполнил:

Фадеев С.

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

Холод И. И..

Санкт-Петербург

2007 г.

  1. Цель: Получение практических навыков построения функции выбора для правил грамматики и освоение приёмов приведения грамматик к классу LL(1).

  1. Грамматика:

<I> ::= <begin><I>

<I> ::= $

<begin> ::= b<begin1>

<begin1> ::= e<begin2>

<begin2> ::= g<begin3>

<begin3> ::= i<begin4>

<begin4> ::= n<begin5>

<begin5> ::= {<Описание>}<end>

<end> ::= e<end1>

<end1> ::= n<end2>

<end2> ::= d<end0>

<Описание> ::= <var><if><end0>

<var> ::= real_<value>;<var1>|int_<value1>;<var1>|$

<var1> ::= <var>

<value1> ::= <int>

<value> ::= <int><frac>

<frac> ::= .<int>

<int> ::= 1|2|3|4|5|6|7|8|9

<if> ::= <if1><char3>

<if1> ::= _if_"("<char1>")"<char2>

<char2> ::= _then"("<S>")"

<char3> ::= _else_"("<S>")"

<char1> ::= <char><Znak>

<Znak> ::= "<" <char>|"=" <char>

<char> ::= a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z

<S> ::= <char><B2>|<if1>

<B2> ::= ":=" <H>

<H> ::= <char><znak><char>

<znak> ::= +|-

<end0> ::= $

  1. Построение функции выбор:

1: Выбор(<I> --> <begin><I>) = Перв(<begin><I>) = Перв(b<begin><I>) = {b}

2: Выбор(<I> --> $) = След(<I>)

3: Выбор(<begin> --> b<begin1>) = Перв(b<begin1>) = {b}

4: Выбор(<begin1> --> e<begin2>) = {e}

5: Выбор(<begin2> --> g<begin3>) = {g}

6: Выбор(<begin3> --> i<begin4>) = {i}

7: Выбор(<begin4> --> n<begin5>) = {n}

8: Выбор(<begin5> --> {<Описание>}<end>) = { { }

9: Выбор( <end> --> e<end1>) = {e}

10: Выбор(<end1> --> n<end2>) = {n}

11: Выбор( <end2> --> d<end0>) = {d}

12:Выбор(<Описание> --> <var><var1><if><end0>) = Перв(<var><var1><if><end0>) = Прев(real_<value>;) UПрев(int_<value1>)UПерв(<var1><if><end0>) = {r, i}

13: Выбор(<var1> --> <var><var1>) = Перв(<var><var1>) = Перв(real_<value>;) U Перв(int_<value1>;) U Перв(<var1>) = {r, i}

14: Выбор( <var1> --> $) = След(<var1>) = Перв(<if><end0>) = Перв(_if_"("<char1>")"<char2>) U Перв(<end0>) = { _ }

15: Выбор(<var> --> real_<value>;) = Перв(real_<value>;) = {r}

16: Выбор( <var> --> int_<value1>;) = Перв(int_<value1>;) = {i}

17: Выбор(<value1> --> <int>) = Перв(<int>) = Перв(1) U Перв(2) U ... U Перв(9) = {1,2,3,4,5,6,7,8,9}

18: Выбор(<value> --> <int><frac>) = {1,2,3,4,5,6,7,8,9}

19: Выбор(<frac> --> .<int>) = { . }

20: Выбор(<int> --> 1) = {1}

21: Выбор(<int> --> 2) = {2}

22: Выбор( <int> --> 3) = {3}

23: Выбор(<int> --> 4) = {4}

24: Выбор(<int> --> 5) = {5}

25: Выбор(<int> --> 6) = {6}

26: Выбор(<int> --> 7) = {7}

27: Выбор(<int> --> 8) = {8}

28: Выбор( <int> --> 9) = {9}

29: Выбор(<if> --> _if_"("<char1>")"<char2>) = { _ }

30: Выбор(<char2> --> _then"("<S>")"<char3>) = { _ }

31: Выбор(<char3> --> _else_"("<S>")") = { _ }

32: Выбор(<char1> --> <char><Znak>) = {a,b,c,...,z}

33: Выбор(<Znak> --> "<"<char>) = { "<" }

34: Выбор(<Znak> --> "="<char>) = { "=" }

35: Выбор(<char> --> a) = {a}

36: Выбор(<char> --> b) = {b}

37: Выбор(<char> --> c) = {c}

38: Выбор(<char> --> d) = {d}

39: Выбор(<char> --> e) = {e}

40: Выбор(<char> --> f) = {f}

41: Выбор(<char> --> g) = {g}

42: Выбор(<char> --> h) = {h}

43: Выбор(<char> --> i) = {i}

44: Выбор(<char> --> j) = {j}

45: Выбор(<char> --> k) = {k}

46: Выбор(<char> --> l) = {l}

47: Выбор(<char> --> m) = {m}

48: Выбор(<char> --> n) = {n}

49: Выбор(<char> --> o) = {o}

50: Выбор(<char> --> p) = {p}

51: Выбор(<char> --> q) = {q}

52: Выбор(<char> --> r) = {r}

53: Выбор( <char> --> s) = {s}

54: Выбор(<char> --> t) = {t}

55: Выбор(<char> --> u) = {u}

56: Выбор(<char> --> v) = {v}

57: Выбор(<char> --> w) = {w}

58: Выбор(<char> --> x) = {x}

59: Выбор(<char> --> y) = {y}

60: Выбор(<char> --> z) = {z}

61: Выбор(<S> --> <char><B2>) = {a,b,c,…,z}

62: Выбор(<B2> --> ":="<H>) = { “:=” }

63: Выбор(<H> --> <char><znak><char>) = {a,b,c,…,z}

64: Выбор(<znak> --> +) = {+}

65: Выбор(<znak> --> -) = {-}

66: Выбор(<end0> --> $) = { b, } }

Выводы: В данной работе мы научились строить функции выбора для каждого правила грамматики, а так же преобразовывать грамматику к классу - LL(1).

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