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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.76
Staalker
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 58
#1

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

13.03.2012, 02:10. Просмотров 4324. Ответов 12
Метки нет (Все метки)

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

Транслятор из языка Паскаль в СИ (текст программы) возможен ли - C++
На фрилансе Человек поинтересовался: "Здравствуйте, нужно написать конвертор на языке Си для перевода программ на языке Паскаль в текст...

Транслятор - C++
Подскажите пожалуйста хорошую литературу на эту тему. Т.е. с чего нужно начать, какой порядок действий и т.п. А сама программа должна...

Напишите за меня транслятор - C++
привет!! не писали работы на создание транслятора или транслятор писали??? где можно поискать код транслятора?

Пишу транслятор и интерпритатор - C++
Всем привет! Я пишу транслятор и интерпретатор. Те люди кто тоже этим занимаются, или тем кому не лень, ПОЖАЛУЙСТА!!! Мне необходимо найти...

Матрица переходов. Транслятор - C++
Здравствуйте! Пишу курсовик (транслятор с языка С на язык ASM). Подскажите пожалуйста как правильно пользоваться сей вещью (матрица...

Как назвать транслятор языка PL/0 - C++
Привет. В книге Вирта (Алгоритмы + структуры данных = программы) в конце разрабатывается Транслятор языка PL/0. Я решил его реализовать....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.03.2012, 02:22 #2
Ахо, Ульман - Крмпиляторы: принципы и практика
1
LK
Заблокирован
13.03.2012, 05:17 #3
для внеклассного чтения:
Конвертер алгоритмов c++ Builder в delphi и обратно
1
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
13.03.2012, 16:31 #4
Цитата Сообщение от Staalker Посмотреть сообщение
Над сделать КОнвертер
Можно узнать зачем? С нулевыми знаниями на входе за один год ты этого точно не сделаешь
0
diagon
Higher
1929 / 1195 / 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;
}
0
aw_rabbit
147 / 104 / 6
Регистрация: 08.02.2012
Сообщений: 202
13.03.2012, 16:49 #6
В этой теме похожая задача

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

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

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

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

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

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

Цитата Сообщение от go Посмотреть сообщение
И это плюс для языка
Спорно. В Сишном варианте переменная объявляется как можно ближе к тому месту, где она будет использоваться. Соответственно, код становится более читаемым. И вопрос-то не в этом. В паскале подобное реализовать, насколько я знаю, попросту невозможно.
1
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.03.2012, 17:43 #11
Цитата Сообщение от diagon Посмотреть сообщение
Спорно.
Да. Спорить можно сколь угодно долго. Лично мне С/С++ нравится больше чем Паскаль/Делфи. Больше возможностей дает. Одна работа с памятью чего стоит. Что же касается чистого паскаля, то можно много привести вещей, которые нельзя реализовать в нем, а в Си это возможно. Да и популярность Си выше. Но речь не об этом. Мне кажется, ТСу необходим уже готовый конвертор, а написать его самому не так легко, ибо с одной только записью префиксной (инкремент, например) уже запутаться можно легко.
0
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
13.03.2012, 18:16 #12
Я плохо знаю Паскаль, но, как мне кажется, с Си на паскаль перевести всё нельзя. Из-за слишком фривольной работы с указателями на Си (вызов функция с "..." является всего лишь следствием из этого). Но, как я думаю, такая задача и не ставится. Если сделать перевод хотя бы простейших конструкций, то такая задача вполне себе выполнимая. Правда перевёрнутая наизнанку. Обычно ставится задача сконвертировать из какого-то языка в Си, а не наоборот
0
aw_rabbit
147 / 104 / 6
Регистрация: 08.02.2012
Сообщений: 202
13.03.2012, 22:09 #13
Цитата Сообщение от diagon Посмотреть сообщение
В Сишном варианте переменная объявляется как можно ближе к тому месту, где она будет использоваться. Соответственно, код становится более читаемым. И вопрос-то не в этом. В паскале подобное реализовать, насколько я знаю, попросту невозможно.
Каждой области видимости задается имя, которое префиксом ставится в имя переменной. И все это выносится в секцию var.

На ЛОРе такая же тема висит. Там курсовая с "размытым" заданием. Скорее всего студенту самому нужно написать грамматику ограниченного С. Не думаю что в задание подразумевает полное соответствие стандарту.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2012, 22:09
Привет! Вот еще темы с ответами:

Написать курсовую "Транслятор из C++ в Pascal" - C++
Транслятор из с++ в паскаль!

Транслятор с паскаля на С - C++
Салют! Можете привести самый простой пример транслятора с паскаля на С, заранее спасибо

Транслятор собственного языка - C++
Собственно, во втором семестре нас ожидает курсовая работу, суть которой заключается в написании транслятора для своего языка...

Паскаль - C++
вычислить значения функции у=х в квадрате, для всех х от 1 до n с шагом 1.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.03.2012, 22:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru