|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Пишем свой интерпретатор языка BASIC20.06.2009, 20:03. Показов 257101. Ответов 464
Метки нет (Все метки)
Благодаря форуму и Evg в частности интерпретатор развивается, потихоньку превращаясь в простенький интерпретатор QBASIC.
Некоторые из самых старых версий сохранились в теме и ссылки на них будут добавлены в это сообщение,а также ссылки на другие темы,связанные с этой. Репозиторий с проектом находится тут, там же есть возможность в браузере посмотреть историю ревизий (английский в логах весьма примитивен,комментарии и рекомендации можете писать в личку),а также скачать самый последний архив репозитория в формате .tar.gz Если кто-то пользуется Subversion,скачать исходники можно так:
Технический приём для формирования согласованных данных https://www.cyberforum.ru/c-linux/thread46096.html Вопрос по svn (Subversion) Создание системы тестирования ПО. Вопрос про разные реализации бэйсиков Можно ли выразить порядковый номер элемента массива через индексы? [C++] Какие флаги указать линкеру для компиляции программы? Как можно определить переменную в файле configure.in,чтобы её можно было использовать в Makefile? Странный SIGSEGV, или что зависит от порядка написания интерфейса класса https://www.cyberforum.ru/c-linux/thread61324.html Альтернативная версия интерпретатора от Evg на C Это простая реализация разбора выражений, написанная Evg на C: Представление выражения в двоичном дереве ***************** Первое сообщение: ***************** Задание(Страуструп,из книги,по готовому коду): Введите программу калькулятора и заставьте её работать.Например,при вводе
LexicalAnalyzer.h
LexicalAnalyzer.cpp
main.cpp
Анализатор-то работает,но конечное значение не вычисляется.Более того,если вводим
Добавлено через 2 часа 5 минут 30 секунд Пришлось решать влоб с дебаггером.У Страуструпа опечатка (или намеренная ошибка,что более вероятно ) Вот в этом куске кода в функции get_token():
Добавлено через 16 минут 19 секунд И ещё опечатка была
31
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| 20.06.2009, 20:03 | |
|
Ответы с готовыми решениями:
464
Пишем свой интерпретатор языка BASIC
Пишем свой чекер |
|
|
|
| 05.01.2013, 23:07 | |
|
Мне кажется, что проблема под виндами может быть исключительно с библиотекой SDL, всё остальное - стандартный Си++. Насчёт commit'а - надо у #pragma'ы спрашивать и вкуривать в настройки sourceforge, как там формируются svn-пользователи. #pragma учится, но, судя по профилю, форум посещает. Но для подстраховки спроси его в личку
0
|
|
|
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 6
|
|
| 10.01.2013, 18:13 | |
|
Добрый день.
Решил оживить тему ещё одним вопросом про написание интерпретатора. У меня есть компилятор, который формирует байт код, и ВМ, которая его читает из файла. Я не могу сообразить как к моей ВМ с байт кодом прикрутить работу с остальным миром (окнами и файловой системой). А то получается она работает в сферическом вакууме. Вариант предложенный здесь (выделить отдельную лексему) не подходит. Хочется сделать реализацию на подобие Java, .NET. Хотелось бы услышать идею реализации. Заранее спасибо всем откликнувшимся.
0
|
|
|
|
|
| 10.01.2013, 18:46 | |
|
В любой реализации байт-кода на самом нижнием уровне должен быть выход на родную операционную систему. Потому что 100%-ых байт-кодов не бывает. В случае java есть какая-то одна (а может несколько библиотек), в процессе исполнения которых вместо байт-кода начинают запускаться родные коды на host'овой машине.
Как технически реализована библиотека - не знаю. Маловероятно, что в язык была внесена какая-то конструкция. Скорее всего библиотека как-то реализована на Си и вокруг неё ручками сделан обвес для виртуальной машины
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 10.01.2013, 20:39 | ||
|
Думаю, в .NET это реализовано идейно так же. Как видно, без нативного кода не обойтись. Виртуальная машина - всего лишь программа, и доступ к внешнему миру из неё можно получить только так же, как из любой другой программы - через системные вызовы ОС. Их же, в свою очередь, сам программист помещает в разделяемые библиотеки, при этом они должны иметь строго согласованную с ВМ сигнатуру, чтобы ВМ могла их вызвать (фактически, всё это напоминает плагины).
5
|
||
| 13.04.2013, 10:51 | |||||||
0
|
|||||||
| 13.04.2013, 10:51 | |
|
пишем свой троян с нуля Пишем свой класс, спецификатор доступа protected Интерпретатор небольшого языка программирования на С++ Не удается откомпилировать интерпретатор М-языка
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|