Читать курсовая по всему другому: "Разработка транслятора в среде Java и С+" Страница 3

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

использовать их в командах 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 идентификатор

Грамматика java

1 := 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

-

-


Интересная статья: Быстрое написание курсовой работы