| имя | номер в классе | тип |
Структура таблицы литералов
| имя | тип |
Разработка синтаксического анализатора
Грамматика языков
В данном проекте исследуется лишь малая часть возможностей и особенностей вышеуказанных языков. В связи с этим спроектированные грамматики для этих языков будут включать лишь те структуры языка, которые нам необходимы
Грамматика С#
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 | + | - | + | + | ||
| идентификатор | + | - | + | + | ||
| ~ | - | - | + | - | ||
| } | + | - | + | + | ||
| * | - | - | - | - | ||
| ~ | - | - | - | - | ||
| * | + | - | + | + | ||
| ~ | - | - | + | - |
Разработка программы
Классовая модель
Диаграмма прецедентов

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