Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Проект транслятора из Kotlin в Java

Автор:   •  Ноябрь 7, 2018  •  Курсовая работа  •  3,914 Слов (16 Страниц)  •  7 Просмотры

Страница 1 из 16

Введение

Целью трансляции является преобразование исходного текста программы в текст на другом языке для аппаратного или программного средства. С развитием вычислительных систем и все большей распространенностью мобильных устройств (которые работают от аккумуляторов) разработка качественного транслятора становится все более актуальной темой.

Очевидной практической целью разработки трансляторов является построение программных систем специфического назначения – языковых процессоров.

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

Цель курсового проекта: разработать проект транслятора, который преобразует программу, содержащую подмножество языка Kotlin, в программу, содержащую подмножество языка Java генерируя эквивалентный исходный код. Задать язык – значит указать множество цепочек, принадлежащих языку.

Задачи:

  • Представить синтаксис языка Kotlin в виде грамматики;
  • Создать проект лексического анализатора;
  • Создать проект синтаксического анализатора;
  • Создать проект семантического анализатора.

Неформальная постановка задачи

Разработать транслятор из подмножества языка Kotlin в эквивалентное подмножество языка Java.

Подмножество языка Kotlin включает:

1.           Типы данных: Int, Float, Char, String, Boolean, Long, Double;

2.           Операторы:  +, -, *, /, %, =, +=, -=, /=, *=, %=, ++, --, &&, ||, !, !=, ==, >=, <=, var, val;

3.       Управляющие конструкции: for, while, do while, when;

4.       Условные операторы: if, if..else;

5.       Стандартная библиотека: print, println, Math.abs.


Грамматика

<Аксиома>

        <список объявлений> <главная функция> |

<список объявлений> <главная функция> <список объявлений> |

<главная функция> <список объявлений> |

<главная функция>

<идентификатор> → <буква><конец идентификатора>

<конец идентификатора> → <буква><конец идентификатора> | <цифра><конец идентификатора> | lambda

<буква> → 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 | 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 | _

<цифра> → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<цифра без ноля> → 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<знак> → ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | : |  |; | < | = | > | ? | @

<управляющий символ> → \\ | \’ | \” | \n | \t | \r

 

<символ> → <буква> | <цифра> | <знак> | <управляющий символ>

<строка> → <символ><конец строки>

<конец строки> → <символ><конец строки> | lambda

<число> → <цифра> <конец числа>

<конец числа> → <цифра><конец числа> | lambda

<целое число положительное> → <цифра без ноля><конец числа>

<целое число> → <целое число положительное> | -<целое число положительное>

<число с плавающей точкой> → <целая часть><дробная часть><метка> |

<целая часть><метка f>

<целая часть> → <целое число> | lambda

<дробная часть> → .<целое число положительное>

<метка> → f | F | lambda

<метка f> → f | F

<логическое значение> → true | false

<оператор объявления> → var | val

<список объявлений> → <объявление> <конец списка объявлений>

<конец списка объявлений>→ <список объявлений> | lambda

<объявление> → <оператор объявления><идентификатор>:<тип данных><правая часть объявления>

...

Скачать:   txt (48.8 Kb)   pdf (705.9 Kb)   docx (1.7 Mb)  
Продолжить читать еще 15 страниц(ы) »
Доступно только на Essays.club