С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 23

Написание интерпретируемого языка программирования

02.09.2011, 16:45. Показов 5628. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Короче, я хочу овладеть языком Си и написать на нем свой интерпретируемый язык программирования
Но к сожалению, сейчас моих знаний не хватает даже на написание токенайзера, что меня не радует. Посоветуйте, какие задачи решать, какие алгоритмы реализовывать, что бы в конце-концов прийти к своей цели.

П.С. Заранее хочу сказать, что готовые решения типа Флексов, Бизонов и т.д. предлогать не нужно.

Добавлено через 1 минуту
П.П.С. Тему про интерпретатор бейсика на С++ я читал, но это же С++, а не Си.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.09.2011, 16:45
Ответы с готовыми решениями:

По русскому названию языка программирования определить английское название этого языка
Задача на перечисляемый тип P=(ада, бейсик, модула2, лисп, паскаль, пл2, фортран); A=(ada, basic, modula2, lisp, paskal, pl1. fortran);

Напутствие с выбором языка программирования
Здравствуйте нужна помощь от опытных участников в нескольких вопросах 1) Нормально ли пойдет C++ как первый язык программирование или...

Выбор языка программирования ООП
Программирую на php&mysql. Знаю Си. (Си изучал чтобы написать модулей для php). Хотелось бы изучить ООП вот только в качестве...

17
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
02.09.2011, 16:46
Для начала в книге Страуструпа есть 2 главы про калькулятор и выделение лексем, кстати там коворится, что при создании языка он и использовал лексемы. Почитайте.
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 23
02.09.2011, 17:17  [ТС]
Ну ок, спасибо. А точное название?
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
02.09.2011, 18:15
Цитата Сообщение от Bizunov Посмотреть сообщение
Ну ок, спасибо. А точное название?
Программирование принципы и практика использования с++. В моей книге (издание 2011) это 6,7 главы.
1
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 23
03.09.2011, 16:04  [ТС]
Спасибо, сейчас буду искать. Держи плюс )

Кто-то еще что нибудь может посоветовать?
0
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
03.09.2011, 16:23
Bizunov, если знакомы с английским, то очень советую книжку "Modern compiler implementation in C" — Andrew W. Appel. Всё объяснено очень хорошо, подробно, от начала до конца. В плане теории необходимые алгоритмы тоже описаны чётко. Плюс ко всему прочему, в конце каждой главы есть раздел "Упражнения", так что в плане практических задачек есть что порешать.
2
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
04.09.2011, 08:05
Цитата Сообщение от Bizunov
Короче, я хочу овладеть языком Си и написать на нем свой интерпретируемый язык программирования
посмотри на python.org исходники
1
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 23
04.09.2011, 20:48  [ТС]
Цитата Сообщение от Ma3a Посмотреть сообщение
"Modern compiler implementation in C"
Блин, не подходит. Почитал чуть-чуть (благо моих скудных знаний английского хватило для того, что бы понимать суть текста) и увидел Yacc, Lex... Я хочу пиисать все сам.
Цитата Сообщение от accept Посмотреть сообщение
посмотри на python.org исходники
Ок, гляну. Но что0то мне подсказывает, что я там ничерта не пойму.

Добавлено через 1 минуту
Программирование принципы и практика использования с++. В моей книге (издание 2011) это 6,7 главы.
Кстати, эта книга только на английском?
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
04.09.2011, 20:53
Цитата Сообщение от Bizunov Посмотреть сообщение
Кстати, эта книга только на английском?
Нет, на русском есть. Это же крутая книга, и как ее можно было не перевести.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.09.2011, 02:16
Цитата Сообщение от Bizunov
Ок, гляну. Но что0то мне подсказывает, что я там ничерта не пойму.
питон сделан на C89
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
05.09.2011, 03:30
Еще можно почитать книгу "Компиляторы. Принципы, технологии, инструменты" за авторством Ахо, Лан, Сети, Ульмана. Там довольно-таки много материала посвящено именно лексическому анализу.
Тебя интересует написание интерпретатора именно на С? А то мог бы посоветовать чрезвычайно полезное чтиво.
1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.09.2011, 04:53
Лучший ответ Сообщение было отмечено как решение

Решение

По компиляторам литературы ДОФИГА! Вот небольшой списочек:


1. Ахо А., Сети Р., Ульман Д. Компиляторы: принципы, технологии и инструменты. – М.: Издательский дом «Вильямс», 2001.
2. Ахо А., Ульман Д. Теория синтаксического анализа, перевода и компиляции. Т.1. Синтаксический анализ. — М.: Мир, 1978.
3. Ахо А., Ульман Д. Теория синтаксического анализа, перевода и компиляции. Т.2. Компиляция. — М.: Мир, 1978.
4. Ахо А., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычисле-ний. – М.: Издательский дом «Вильямс», 2001.
5. Баррон Д. Ассемблеры и загрузчики. — М.: Мир, 1974.
6. Баррон Д. Введение в языки программирования. — М.: Мир, 1980.
7. Бейзер Б. Тестирование черного ящика. Технологии функционального тестиро-вания программного обеспечения и систем. — СПб.: Питер, 2004.
8. Бек Л. Введение в системное программирование. — М.: Мир, 1988.
9. Бен-Ари М. Языки программирования. Практический сравнительный анализ. — М.: Мир, 2000.
10. Браун П. Макропроцессоры и мобильность программного обеспечения. — М.: Мир, 1977.
11. Вайнгартен Ф. Трансляция языков программирования. — М.: Мир, 1977.
12. Винниченко И.В. Автоматизация процессов тестирования. — СПб.: Питер, 2005.
13. Вирт Н. Алгоритмы + данные = программы. — М.: Мир, 1985.

15. Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. – СПб.: Пи-тер, 2001.
16. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. — М.: Мир, 1975.

18. Донован Дж. Системное программирование. — М.:, Мир, 1975.
19. Зелковиц М., Шоу А., Гэннон Д. Принципы разработки программного обеспече-ния. — М.: Мир, 1982.
20. Карпов Ю.Г. Теория и практика программирования. Основы построения трансля-торов. — Спб.: БХВ-Петербург, 2005.
21. Касьянов В.Н., Поттосин И.В. Методы построения трансляторов. — Новоси-бирск, Наука. Сиб. Отделение, 1986.
22. Кемпбелл-Келли М. Введение в макросы. — М.: Мир, 1978.


28. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы построения компиля-торов. – М.: Мир, 1979.

30. Маккиман У., Хорнинг Дж., Уортман Д. Генератор компиляторов. — М.: Стати-стика, 1980.
31. Мозговой М.В. Классика программирования: алгоритмы, языки, автоматы, ком-пиляторы. Практический подход. — СПб.: Наука и техника, 2006.
32. Молчанов А.Ю. Системное программное обеспечение. Лабораторный практикум. — СПб.: Питер, 2005.
33. Опалева Э.А., Самойленко В.П. Языки и методы трансляции. — СПб.: БХВ-Петербург, 2005.

36. Пратт Т., Зелковиц М. Языки программирования: разработка и реализация. — СПб.: Питер, 2002.
37. Свердлов С.З. Языки программирования и методы трансляции: учебное пособие. — СПб.: Питер, 2007.

Две последние - ИМХО на данный момент самые лучшие для того, чтобы въехать в предмет...

Но есть еще:

46. Фостер Дж. Автоматический синтаксический анализ. — М.: Мир, 1975.
47. Хантер Р. Проектирование и конструирование компиляторов. — М.: Финансы и статистика, 1984.
48. Хантер Р. Основные концепции компиляторов. — М.: Издательский дом «Виль-ямс», 2002.
49. Хендрикс Ж. Компилятор языка Си для микроЭВМ. — М.: Радио и связь, 1989.
50. Хигман Б. Сравнительное изучение языков программирования. — М.: Мир, 1974.

52. Шилдт. Г. Искусство программирования на С++. — Спб.: БХВ-Петербург, 2005.

В последней есть тоже про написание компиляторов-интерпретаторов.
В 2010 году еще вышла книга Никлауса Вирта Построение компиляторов. Это - минимум, который надо знать.
3
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
05.09.2011, 09:02
Bizunov, думаю, неплохой практикой будет xml-парсер написать. Начать с простого разбора и до взрослого варианта с форматированием и прочими радостями...
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 23
05.09.2011, 19:01  [ТС]
Цитата Сообщение от Dani Посмотреть сообщение
Нет, на русском есть. Это же крутая книга, и как ее можно было не перевести.
Такс, коплю деньги )
Цитата Сообщение от accept Посмотреть сообщение
питон сделан на C89
Это не облегчает задачу. Его я плохо знаю + проект очень большой, для меня, по крайней мере.
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
05.09.2011, 20:24
Цитата Сообщение от Bizunov Посмотреть сообщение
Такс, коплю деньги )
я на нее кучу денег убухал 60 баксов почти
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
05.09.2011, 21:48
Bizunov, советую взять исходники Evg отсюда (они написаны на C) и разобраться.
Представление выражения в двоичном дереве
Пояснения к своему коду он даёт немного ниже:
Представление выражения в двоичном дереве
Это программа по разбору выражений. Мне в своё время очень помогло,и до последней версии интерпретатора можно увидеть использованные мной куски кода из его программы. А ещё почитайте теоретические выкладки Evg из темы про интерпретатор, во-первых,он приводит примеры на C,а во-вторых,теория не привязана к языку.
Мне кажется, самый лучший способ - это начать писать, столкнуться с трудностями, и потом уже лезть в теорию. Мне так легче было понять, о чём же пишет Evg
1
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 23
07.09.2011, 18:50  [ТС]
#pragma, спасибо, полистаю как нибудь.
Тут внезапно (точнее, ВНЕЗАПНО) началась учеба, по этому, сейчас ни чего не пробую написать. Вчера учил наизусть 14 страниц рукописного текста, блин. Предмет "Основы алгоритмизации и программирования" оказался очень суровым!
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
07.09.2011, 21:32
Цитата Сообщение от Bizunov Посмотреть сообщение
#pragma, спасибо, полистаю как нибудь.
Тут внезапно (точнее, ВНЕЗАПНО) началась учеба, по этому, сейчас ни чего не пробую написать. Вчера учил наизусть 14 страниц рукописного текста, блин. Предмет "Основы алгоритмизации и программирования" оказался очень суровым!
Зачем учить наизусть? С ума сошли?????
Думать над материалом надо, раскладывать по полочкам - и на практике пробовать применить.
А учить наизусть - это УЖОС!!!!!!
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.09.2011, 21:32
Помогаю со студенческими работами здесь

Интерпретатор небольшого языка программирования на С++
Здравствуйте, уважаемые форумчане! Я тут где-то год назад прочитал тему Evg и #pragma о создании интерпретатора, меня эта тема очень...

перевести с одного языка программирования на другой
условие задачи Вариант 1. Получить квадратную матрицу A размером NN (N – случайное число от 4 до 10) вида: . Заменить на (-1)...

Посоветуйте литературу по изучению языка программирования С++ ?
Всем добрый вечер! Посоветуйте толковые книжки по программированию на языке С++ с нуля ? Тоесть раньше вообще не занимался...

Написание программ на нескольких языках программирования
Написание программ на нескольких языках программирования - слышал, что так можно делать. А как? (Просто для интереса спросил.)

Разработайте лексический анализатор для языка программирования C--
Лексемы, допустимые в языке: letter ::= a | b | ... | z | A | B | ... | Z digit ::= 0 | 1 | ... | 9 char ::= \' | " | \n |...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru