|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.03.2017, 13:20 | #1 |
Форумчанин
Регистрация: 13.05.2016
Сообщений: 111
|
Как создать конвертер (Переводчик) кода языков программирования?
Здравствуйте, дали мне тему на курсач. "Конвертер кода". Нужно сделать программу для перевода кода с Pascal на C# и наоборот. Выглядеть она будет как 2 текстовых поля и кнопочка "Конвертировать". Приступил я, вроде все шло неплохо, пока не добрался до функций. Поясню:
в паскале объявление функции выглядит так: Код:
Код:
Так вот проблема в том, что в C# тип функции пишется в начале, а в Pascal'е в конце. Та же проблема и при объявлении переменных. В C# Код:
Код:
Может у кого есть идеи, как это можно реализовать? Это бы очень мне помогло. Программу делаю в Windows Form. Последний раз редактировалось Kef1r; 18.03.2017 в 14:18. |
18.03.2017, 13:28 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Обычно во всех задачах связанных с формальными языками (компиляторы, интерпретаторы, конвертеры, утилиты для рефакторинга, ...) не делают всё сразу, а разделяют на несколько этапов.
Сначала парсинг и создание какой-то удобной структуры/дерева (например AST), а потом уже проход по нему для выполнения самой задачи (генерация кода, ...)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
18.03.2017, 14:16 | #3 | |
Форумчанин
Регистрация: 13.05.2016
Сообщений: 111
|
Цитата:
|
|
18.03.2017, 14:46 | #4 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Она вам поможит так как выводить вы сможете в прлизвольном порядке слов.
Вам надо освоить рекурсию или автомат с магазинной(стековой) памятью. При помощи них можно развернуть в обратном порядке.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Вадим Мошев; 18.03.2017 в 14:55. |
18.03.2017, 15:03 | #5 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
|
|
18.03.2017, 15:07 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Я ж сказал как.
Не надо ничего с целыми строками типа "x, y: int" делать на этапе генерации кода. Надо разделить на токены, потом создать дерево (AST или хотя бы CST) и ходить по нему, генерировать код. https://en.wikipedia.org/wiki/Compiler Pragmatic Bookshelf Publishing Language Implementation Patterns, Create Your Own Domain-Specific.pngAho - Compilers - Principles, Techniques, and Tools 2e.pdf - Foxit Reader 2017-03-18 14.05.46.png
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
18.03.2017, 15:19 | #7 |
Форумчанин
Регистрация: 13.05.2016
Сообщений: 111
|
Спасибо, буду пробовать.
|
18.03.2017, 16:05 | #8 |
Форумчанин
Регистрация: 13.05.2016
Сообщений: 111
|
Можно вопрос не по теме: на сколько бы вы оценили сложность этой программы (1-минимум, 5-максимум). Просто интересно)
|
18.03.2017, 16:11 | #9 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Зависит от того какое подмножество языка нужно поддерживать.
Легче компилятора, не нужно париться с машинными кодами или байт кодом, переводить циклы/if'ы в goto и т.п. ) Вообще если не нужно всё реализовывать самому с нуля, то для парсинга можно взять библиотеку типа ANTLR (генерация парсера из грамматики).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
18.03.2017, 16:51 | #10 |
Форумчанин
Регистрация: 13.05.2016
Сообщений: 111
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как создать свой языковый переводчик? | midoxxx | Помощь студентам | 20 | 09.10.2016 16:58 |
Сколько языков программирования в кс 1.6 ? | Pekky | Свободное общение | 19 | 15.06.2015 00:48 |
Теория языков программирования | Tesmont | Помощь студентам | 1 | 03.02.2011 13:40 |
Как компиляторы для языков программирования пишутся на самих себе? | bullvinkle | Свободное общение | 29 | 19.03.2010 15:47 |
совмещение 2-х языков программирования | fis | Общие вопросы Delphi | 5 | 30.01.2007 20:13 |