Структура таблицы идентификаторов




имя номер в классе тип
     

Структура таблицы литералов

имя тип
   

Разработка синтаксического анализатора

Грамматика языков

В данном проекте исследуется лишь малая часть возможностей и особенностей вышеуказанных языков. В связи с этим спроектированные грамматики для этих языков будут включать лишь те структуры языка, которые нам необходимы

Грамматика С#

1 <программа>:= 2 <предпроцессор> 3 namespace 4 {5 <операторы> 6}

7 <предпроцессор>:= 9 using 10 <предпроцессор>

8 <предпроцессор>:= 11 е

12 <операторы>:= 16 <класс> 17 <операторы>

13 <операторы>:= 18 идентификатор 19 <продолжение1>

20 <операторы>

14 <операторы>:= 21 е

15 <операторы>:= 22 <декларация> 23 <операторы>

24 <класс>:= 25 class 26 идентификатор 27 <наследование> 28 {29 <операторы> 30} 31;

32<наследование>:= 34: 35 идентификатор

33<наследование>:= 36е

37<продолжение1>:= 40. 41 идентификатор 42 <продолжение2> 43;

38<продолжение1>:= 44 <продолжение2> 45;

39<продолжение1>:= 46;

47 <продолжение2>:= 49 (50)

48 <продолжение2>:= 80 е

51 <декларация>:= 52 <тип> 53 идентификатор 55 <продолжение3>

56<продолжение3>:= 58 (59) 60 (61 <операторы> 62 return 63 литерал 64; 81)

57<продолжение3>:= 65<продолжение4>

66 <продолжение4>:= 68, 69 идентификатор 70 <продолжение4>

67 <продолжение4>:= 71;

72 <тип>:= 76 int

73 <тип>:= 77 float

74 <тип>:= 78 char

75 <тип>:= 79 идентификатор

Грамматика java

1 <программа>:= 2 <предпроцессор> 3 <операторы>

7 <предпроцессор>:= 9 using 10 <предпроцессор>

8 <предпроцессор>:= 11 е

12 <операторы>:= 16 <класс> 17 <операторы>

13 <операторы>:= 18 идентификатор 19 <продолжение1>

20 <операторы>

14 <операторы>:= 21 е

15 <операторы>:= 22 <декларация> 23 <операторы>

24 <класс>:= 25 class 26 идентификатор 27 <наследование> 28 {29 <операторы> 30} 31;

32<наследование>:= 34: 35 идентификатор

33<наследование>:= 36е

37<продолжение1>:= 40 -> 41 идентификатор 42 <продолжение2> 43;

38<продолжение1>:= 44 <продолжение2> 45;

39<продолжение1>:= 46;

47 <продолжение2>:= 49 (50)

48 <продолжение2>:= 80 е

51 <декларация>:= 52 <тип> 53 <ссылка> 54 идентификатор 55 <продолжение3>

56<продолжение3>:= 58 (59) 60 (61 <операторы> 62 return 63 литерал 64; 81)

57<продолжение3>:= 65<продолжение4>

66 <продолжение4>:= 68, 69 идентификатор 70 <продолжение4>

67 <продолжение4>:= 71;

72 <тип>:= 76 int

73 <тип>:= 77 float

74 <тип>:= 78 char

75 <тип>:= 79 идентификатор

82<ссылка>:= 84 *

83<ссылка>:= 85 e

Доказательство принадлежности к LL(1) – грамматике

С#

<предпроцессор>={using | namespace}

<операторы>={class | идентификатор |} | int | float | char}

<наследование>={: | {}

<продолжение1>={. | (|;)

<продолжение2>={(|;)

<продолжение3>={(|, |;)

<продолжение4>={, |;}

<тип >={int | float | char | идентификатор}

Грамматика java

<предпроцессор>={using | class | идентификатор | int | float | char}

<операторы>={class | идентификатор | int | float | char}

<наследование>={: | {}

<продолжение1>={-> | (|;)

<продолжение2>={(|;)

<продолжение3>={(|, |;)

<продолжение4>={, |;}

<тип >={int | float | char | идентификатор}

<ссылка>={* | идентификатор}

 

Таблицы разбора

Таблица разбора С#

Ожидаемый терминал Переход Принять В стек Из стека Ошибка
1. ~   - - - -
2. ~   - - - -
3. namespace   + - - +
4. {   + - - +
5. ~   - + - -
6. }   + - + +
7. using   - - - -
8. ~   - - - -
9. using   + - - +
10. ~   - - - -
11. ~   - - - -
12. class   - - - -
13. идентификатор   - - - -
14. }   - - - -
15. ~   - - - -
16. ~   - + - -
17. ~   - - - -
18. идентификатор   + - - +
19. ~   - + - -
20. ~   - - - -
21. ~   - - + -
22. ~   - + - -
  ~   - - - -
  ~   - - - -
  class   + - - +
  идентификатор   + - - +
  ~   - + - -
  {   + - - +
  ~   - + - -
  )   + - - +
  ;   + - + +
  :   - - - -
  ~   - - - -
  :   + - - +
  идентификатор   + - + +
  ~   - - + -
  .   - - - -
  (   - - - -
  ;   - - - +
  .   + - - +
  идентификатор   + - - +
  ~   - + - -
  ;   + - + +
  ~   - + - -
  ;   + - + +
  ;   + - + +
  (   - - - -
  ~   - - - -
  (   + - - +
  )   + - + +
  ~   - - - -
  ~   - + - -
  идентификатор   + - - +
             
  ~   - - - -
  (   - - - -
  ~   - - - -
  (   + - - +
  )   + - - +
  {   + - - +
  ~   - + - -
  return   + - - +
  литерал   + - - +
  ;   + - - +
  ~   - - - -
  ,   - - - -
  ;   - - - +
  ,   + - - +
  идентификатор   + - - +
  ~   - - - -
  ;   + - + +
  int   - - - -
  float   - - - -
  char   - - - -
  идентификатор   - - - +
  int   + - + +
  float   + - + +
  char   + - + +
  идентификатор   + - + +
  ~   - - + -
  }   + - + +

Таблица разбора java

Ожидаемый терминал Переход Принять В стек Из стека Ошибка
1. ~   - - - -
2. ~   - - - -
3. ~   - - - -
7. using   - - - -
8. ~   - - - -
9. using   + - - +
10. ~   - - - -
11. ~   - - - -
12. class   - - - -
13. идентификатор   - - - -
14. }   - - - -
15. ~   - - - -
16. ~   - + - -
17. ~   - - - -
18. идентификатор   + - - +
19. ~   - + - -
20. ~   - - - -
21. ~   - - + -
22. ~   - + - -
  ~   - - - -
  ~   - - - -
  class   + - - +
  идентификатор   + - - +
  ~   - + - -
  {   + - - +
  ~   - + - -
  )   + - - +
  ;   + - + +
  :   - - - -
  ~   - - - -
  :   + - - +
  идентификатор   + - + +
  ~   - - + -
  ->   - - - -
  (   - - - -
  ;   - - - +
  ->   + - - +
  идентификатор   + - - +
  ~   - + - -
  ;   + - + +
  ~   - + - -
  ;   + - + +
  ;   + - + +
  (   - - - -
  ~   - - - -
  (   + - - +
  )   + - + +
  ~   - - - -
  ~   - + - -
  ~   - - + -
  идентификатор   + - - +
  ~   - - - -
  (   - - - -
  ~   - - - -
  (   + - - +
  )   + - - +
  {   + - - +
  ~   - + - -
  return   + - - +
  литерал   + - - +
  ;   + - - +
  ~   - - - -
  ,   - - - -
  ;   - - - +
  ,   + - - +
  идентификатор   + - - +
  ~   - - - -
  ;   + - + +
  int   - - - -
  float   - - - -
  char   - - - -
  идентификатор   - - - +
  int   + - + +
  float   + - + +
  char   + - + +
  идентификатор   + - + +
  ~   - - + -
  }   + - + +
  *   - - - -
  ~   - - - -
  *   + - + +
  ~   - - + -

Разработка программы

Классовая модель

Диаграмма прецедентов


Диаграмма классов

 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-10-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: