- 1
- 2
- 3
- 4
- 5
- . . .
- последняя »
использовать их в командах break и continue, благодаря чему исключается такой повод использования goto, как выход из вложенного цикла.
C# поддерживает отдельное понятие именованной типизированной константы и ключевое слово const. В Java констант как таковых нет, вместо них используются статические переменные класса с модификатором final – эффект от их использования точно такой же. Разработка транслятора
Разработка лексического анализатора Алфавит языкаБольшие и малые буквы английского алфавита: a..z, A..Z
Цифры: 0,1,2,3,4,5,6,7,8,9.
Другие символы: ‘’, ‘:’, ‘, ’, ‘’’, ‘;’, ‘{», ‘}’, ‘(», ‘)’
Классы лексемзарезервированные слова; знаки операций и разделители; литералы; идентификаторы
Класс идентификаторы: к этому классу относятся все наборы цепочек, кроме зарезервированных слов Класс зарезервированных слов:
Для C#
using, class, int, float, char, public, protected, private, return, namespace
Для Java
using, class, int, float, char, public, protected, private, return
Класс знаков операций и разделителей:
() {} : ; = -> . , ‘ *
Класс литералов:
Литерал – целочисленная или текстовая константа.
Структура таблицы идентификаторов имя | номер в классе | тип |
Структура таблицы литералов
имя | тип |
В данном проекте исследуется лишь малая часть возможностей и особенностей вышеуказанных языков. В связи с этим спроектированные грамматики для этих языков будут включать лишь те структуры языка, которые нам необходимы
Грамматика С#1 := 2 3 namespace 4 {5 6}
7 := 9 using 10
8 := 11 е
12 := 16 17
13 := 18 идентификатор 19
20
14 := 21 е
15 := 22 23
24 := 25 class 26 идентификатор 27 28 {29 30} 31;
32:= 34: 35 идентификатор
33:= 36е
37:= 40. 41 идентификатор 42 43;
38:= 44 45;
39:= 46;
47 := 49 (50)
48 := 80 е
51 := 52 53 идентификатор 55
56:= 58 (59) 60 (61 62 return 63 литерал 64; 81)
57:= 65
66 := 68, 69 идентификатор 70
67 := 71;
72 := 76 int
73 := 77 float
74 := 78 char
75 := 79 идентификатор
Грамматика java1 := 2 3
7 := 9 using 10
8 := 11 е
12 := 16 17
13 := 18 идентификатор 19
20
14 := 21 е
15 := 22 23
24 := 25 class 26 идентификатор 27 28 {29 30} 31;
32:= 34: 35 идентификатор
33:= 36е
37:= 40 -> 41 идентификатор 42 43;
38:= 44 45;
39:= 46;
47 := 49 (50)
48 := 80 е
51 := 52 53 54 идентификатор 55
56:= 58 (59) 60 (61 62 return 63 литерал 64; 81)
57:= 65
66 := 68, 69 идентификатор 70
67 := 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}
={: | {}
={. | (|;)
={(|;)
={(|, |;)
={, |;}
={int | float | char | идентификатор}
Грамматика java
={using | class | идентификатор | int | float | char}
={class | идентификатор | int | float | char}
={: | {}
={-> | (|;)
={(|;)
={(|, |;)
={, |;}
={int | float | char | идентификатор}
={* | идентификатор} Таблицы разбора
Таблица разбора С# № | Ожидаемый терминал | Переход | Принять | В стек | Из стека | Ошибка |
1. | ~ | 2 | - | - | - | - |
2. | ~ | 7 | - | - |
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя »
Похожие работы
Тема: Разработка транслятора в среде Java и С+ |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Курсовая работа (т)) |
Тема: Використання Java на комп’ютері користувача. Технологія проектування аплетів Java. Робота з аплетами Java |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
Тема: Разработка транслятора на языке Си |
Предмет/Тип: Другое (Диплом) |
Тема: Разработка транслятора-интерпретатора учебного языка программирования |
Предмет/Тип: Отсутствует (Курсовая работа (т)) |
Тема: Разработка транслятора с ограниченного подмножества языка высокого уровня |
Предмет/Тип: Отсутствует (Курсовая работа (т)) |
Интересная статья: Быстрое написание курсовой работы