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