Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 749
от 25.05.2007, 01:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 483, Экспертов: 69
В номере:Вопросов: 2, Ответов: 6


Вопрос № 87599: Здравствуйте уважаемые эксперты! Занимаюсь разработкой транслятора Pascal->C/C++. Нужна информация по теме - статьи, книги, готовые примеры и т.д. Язык написания - С (Может быть Paccal). Буду благодарен за все! ..
Вопрос № 87624: Здравствуйте, эксперты! Возник такой вопрос: как можно передать тип данных с помощью указателя (если можно)? Задача заключается в построении упорядоченного массива из данных любого типа (тип данных любой, но все элементы массива будут одн...

Вопрос № 87.599
Здравствуйте уважаемые эксперты!
Занимаюсь разработкой транслятора Pascal->C/C++.
Нужна информация по теме - статьи, книги, готовые примеры и т.д.
Язык написания - С (Может быть Paccal).
Буду благодарен за все!
Отправлен: 19.05.2007, 10:12
Вопрос задал: Попов Евгений (статус: 3-ий класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: menand
Здравствуйте, Попов Евгений!

Есть такая книжка:

С.З.Свердлов

"Языки программирования и методы трансляции"

Советую зайти в магаз (например МДК, или МГ) и купить.
Ответ отправил: menand (статус: 10-ый класс)
Ответ отправлен: 19.05.2007, 10:29
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за совет. Верно, книжка не плохая!

Отвечает: ramok
Здравствуйте, Попов Евгений!

ссылка на подобный открытый проект. исходники доступны, можно посмотреть:
http://directory.fsf.org/p2c.html
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 19.05.2007, 13:24
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ссылку. Надеюсь подчерпнуть и нее много полезного.

Отвечает: Olegzp
Здравствуйте, Попов Евгений!
Джек Креншоу. Давайте создадим компилятор!
http://bcb-program.narod.ru/books/crenshaw.rar
Эта серия, написанная в период с 1988 по 1995 года и состоящая из шестнадцати частей, является нетехническим введением в конструирование компиляторов. Серия является руководством по теории и практике разработки синтаксических анализаторов и компиляторов языков программирования. До того как вы закончите чтение этой книги, вы раскроете каждый аспект конструирования компиляторов, разработаете новый язык программирования и создадите работающий компилятор.

http://bcb-program.narod.ru/books/context.rar
Ответ отправил: Olegzp (статус: 2-ой класс)
Ответ отправлен: 20.05.2007, 13:30
Оценка за ответ: 5
Комментарий оценки:
Спасибо за информацию, почитаю на досуге. Надеюсь принесет много пользы!
Удачи!


Вопрос № 87.624
Здравствуйте, эксперты!
Возник такой вопрос: как можно передать тип данных с помощью указателя (если можно)?
Задача заключается в построении упорядоченного массива из данных любого типа
(тип данных любой, но все элементы массива будут одного типа)
Отправлен: 19.05.2007, 15:18
Вопрос задал: Salo_mon (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ramok
Здравствуйте, Salo_mon!

в C нельзя. в C++ для этого существуют шаблоны (ключевое слово C++ template).
так же существует STL (стандартная библиотека С++) в которой находятся уже готовые шаблоны
различных структур данных(массивов, хешей, очередей и так далее) для любых типов данных. в вашем случае подойдет контейнер vector.
в любом учебнике по С++ эта информация есть.
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 19.05.2007, 15:30
Оценка за ответ: 4
Комментарий оценки:
спасибо большое за ответ

Отвечает: Ilkras
Здравствуйте, Salo_mon!
нет нельзя.
вместо этого можно включить в каждый тип дополнительный элемент, который будет его как-то идентифицировать или же обявить тип-оболочку (например наследующий класс если это С++), который будет включать в себя идентификатор типа.
Что-то похожее реализовано уже и называется RTTI (run time type information). Поищите где-нибудь пример имплементации. Я сейчас ничего не припоминаю.
Ответ отправил: Ilkras (статус: 10-ый класс)
Ответ отправлен: 19.05.2007, 16:13
Оценка за ответ: 4

Отвечает: kool
Здравствуйте, Salo_mon!
Тип данных с помощью указателя передается как
указатель на этот тип данных.
В сях есть приведение типов, т.е. с помощью этого
механизма участок выделенной памяти можно представлять как
данные нужного типа.
К примеру есть указатели
void *ptr;
ptr=(void*)calloc(....);
int *ip;
char *cp;
тогда можно сделать так:
ip=(int*)ptr;
cp=(char*)ptr;
т.е. ip - это и будет массив данных типа int,
а cp - массив данных типа char.
Хотя это будет один и тот же участок памяти.
Удачи!

---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 19.05.2007, 18:31
Оценка за ответ: 5
Комментарий оценки:
Спасибо, то, что надо


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное