Форум программистов, компьютерный форум CyberForum.ru

Транслятор с С в Паскаль - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.76
Staalker
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 58
13.03.2012, 02:10     Транслятор с С в Паскаль #1
Над сделать КОнвертер.. что бы с Си кода переводил в код Паскаль. НЕмножко разобравшись понял что надо Синтаксический анализ, синтаксическое дерево. За это надо хвататься??
Если да.. как их написать...не имею никакого понятия.. Посоветуйте что нибуть
Зарание спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2012, 02:10     Транслятор с С в Паскаль
Посмотрите здесь:

C++ из Паскаль в С++
C++ Напишите за меня транслятор
C++ Транслятор
Матрица переходов. Транслятор C++
C++ Транслятор из языка Паскаль в СИ (текст программы) возможен ли
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.03.2012, 02:22     Транслятор с С в Паскаль #2
Ахо, Ульман - Крмпиляторы: принципы и практика
LK
Заблокирован
13.03.2012, 05:17     Транслятор с С в Паскаль #3
для внеклассного чтения:
Конвертер алгоритмов c++ Builder в delphi и обратно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
13.03.2012, 16:31     Транслятор с С в Паскаль #4
Цитата Сообщение от Staalker Посмотреть сообщение
Над сделать КОнвертер
Можно узнать зачем? С нулевыми знаниями на входе за один год ты этого точно не сделаешь
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.03.2012, 16:43     Транслятор с С в Паскаль #5
А это возможно вообще?
Что-то не припомню в паскале аналога void*, к примеру.
И как переведется на паскаль следующий код?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main()
{
    {
        int a = 5;
        printf("%d ", a);
    }
    
    {
        double a = 3.5;
        printf("%lf\n", a);
    }
    
    return 0;
}
aw_rabbit
 Аватар для aw_rabbit
146 / 103 / 6
Регистрация: 08.02.2012
Сообщений: 202
13.03.2012, 16:49     Транслятор с С в Паскаль #6
В этой теме похожая задача

Задача сложная, но решается легко при наличии достаточного количества теоретических знаний. Сначала пишется сканер (лексический анализатор или лексер) детерминированным конечным автоматом, потом парсер (синтаксический анализатор) рекурсивным спуском, магазинным автоматом, можно еще алгоритмом Кока — Янгера — Касами, но для него грамматика должна быть в нормальной форме Хомского. Потом семантический анализатор и только потом дописывается сам транслятор.

Абстрактное синтаксическое дерево строится из дерева разбора, которое получается в результате работы парсера. Для учебных задач обычно достаточно синтаксически управляемой трансляции.

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

PS: на изучение теории обычно уходит год.

Добавлено через 2 минуты
Цитата Сообщение от diagon Посмотреть сообщение
А это возможно вообще?
Ага, facebook php в c++ странслировал
http://developers.facebook.com/blog/post/358/
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.03.2012, 16:51     Транслятор с С в Паскаль #7
Цитата Сообщение от aw_rabbit Посмотреть сообщение
php в c++ странслировал
Сравнили, тоже.
php обладает намного, намного меньшими возможностями, чем с++.
С же обладает большими возможностями, чем паскаль.
Поэтому я очень сомневаюсь, что задача выполнима.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.03.2012, 17:15     Транслятор с С в Паскаль #8
Цитата Сообщение от diagon Посмотреть сообщение
void*,
А тип pointer?

Цитата Сообщение от diagon Посмотреть сообщение
И как переведется на паскаль следующий код?
Так переменные там объявляются не в самом блоке, а в разделе var. И это плюс для языка, код более читаем и ошибки отсекаются на уровне синтаксиса.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
13.03.2012, 17:18     Транслятор с С в Паскаль #9
Конвертация кода
Только наобарот
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.03.2012, 17:31     Транслятор с С в Паскаль #10
Цитата Сообщение от go Посмотреть сообщение
А тип pointer?
Почему-то думал, что это чисто делфийская приблуда.

Цитата Сообщение от go Посмотреть сообщение
И это плюс для языка
Спорно. В Сишном варианте переменная объявляется как можно ближе к тому месту, где она будет использоваться. Соответственно, код становится более читаемым. И вопрос-то не в этом. В паскале подобное реализовать, насколько я знаю, попросту невозможно.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.03.2012, 17:43     Транслятор с С в Паскаль #11
Цитата Сообщение от diagon Посмотреть сообщение
Спорно.
Да. Спорить можно сколь угодно долго. Лично мне С/С++ нравится больше чем Паскаль/Делфи. Больше возможностей дает. Одна работа с памятью чего стоит. Что же касается чистого паскаля, то можно много привести вещей, которые нельзя реализовать в нем, а в Си это возможно. Да и популярность Си выше. Но речь не об этом. Мне кажется, ТСу необходим уже готовый конвертор, а написать его самому не так легко, ибо с одной только записью префиксной (инкремент, например) уже запутаться можно легко.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
13.03.2012, 18:16     Транслятор с С в Паскаль #12
Я плохо знаю Паскаль, но, как мне кажется, с Си на паскаль перевести всё нельзя. Из-за слишком фривольной работы с указателями на Си (вызов функция с "..." является всего лишь следствием из этого). Но, как я думаю, такая задача и не ставится. Если сделать перевод хотя бы простейших конструкций, то такая задача вполне себе выполнимая. Правда перевёрнутая наизнанку. Обычно ставится задача сконвертировать из какого-то языка в Си, а не наоборот
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2012, 22:09     Транслятор с С в Паскаль
Еще ссылки по теме:

C++ Пишу транслятор и интерпритатор
Написать курсовую "Транслятор из C++ в Pascal" C++
C++ Как назвать транслятор языка PL/0

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
aw_rabbit
 Аватар для aw_rabbit
146 / 103 / 6
Регистрация: 08.02.2012
Сообщений: 202
13.03.2012, 22:09     Транслятор с С в Паскаль #13
Цитата Сообщение от diagon Посмотреть сообщение
В Сишном варианте переменная объявляется как можно ближе к тому месту, где она будет использоваться. Соответственно, код становится более читаемым. И вопрос-то не в этом. В паскале подобное реализовать, насколько я знаю, попросту невозможно.
Каждой области видимости задается имя, которое префиксом ставится в имя переменной. И все это выносится в секцию var.

На ЛОРе такая же тема висит. Там курсовая с "размытым" заданием. Скорее всего студенту самому нужно написать грамматику ограниченного С. Не думаю что в задание подразумевает полное соответствие стандарту.
Yandex
Объявления
13.03.2012, 22:09     Транслятор с С в Паскаль
Ответ Создать тему
Опции темы

Текущее время: 01:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru