User Tag List

Показано с 1 по 10 из 213

Тема: Компилятор языка Паскаль - планы на будущее

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я тоже решил "пошутить" и выложить что есть

    В исходниках на данный момент 134 TODO, плюс список задач в текстовом файле, то есть ещё работать и работать. В целом - стараюсь сделать "настоящий" Паскаль, совместимый с TurboPascal/FreePascal. Пока это всё выдаёт огромный медленный код, нужна оптимизация. Но сейчас важнее отладить фичи, чтобы устаканилась внутренняя структура компилятора, на которую опирается кодогенератор.

    О возможностях компилятора.

    Поддерживаются типы данных: 6 целочисленных (byte, word, longword, shortint, smallint, longint), boolean, pointer, string.
    Допускаются array, record и pointer в любых комбинациях: массив указателей на структуры, внутри которых указатели на массивы байтов, и т.д., на сколько хватит оперативки.
    Массивы пока только одномерные, но можно описать массив массивов.

    Переменные могут быть любого типа (см. выше), глобальные/локальные, допускается absolute для явного указания адреса, по которому будет храниться эта переменная.

    Выражения и операторы в выражениях: + - * / > < >= <= = <> div mod and or xor shl shr @ ^ :=
    В выражениях учитываются приоритеты арифметических операций, скобки, допускается явное преобразование типов. Сложность выражений, в принципе, ничем не ограничена.

    Ветвления, циклы: if, while, repeat, for. Цикл for работает с предпроверкой диапазона

    Подпрограммы (процедуры, функции): до 10 параметров любого типа, параметры передаются по значению и по ссылке (var, const).
    Допускаются полиморфные подпрограммы (подпрограммы с одинаковым именем, но разным набором параметров).

    Препроцессор понимает директивы условной компиляции $define, $undef, $ifdef, $else, $endif.
    Директива $i - вставка текста из другого файла (include).

    Компилятор (транслятор?) выдаёт файл на языке ассемблера, который можно собрать кросс-ассемблером.

    Можно делать вставки на ассемблере asm...end, всё что между - копируется в выходной файл как есть. Парсер ассемблера и обработка в нём идентификаторов - отдельное большое TODO.

    Теперь о недоделках.

    Тип char вроде есть, но не проверял, скорее всего будет некорректно работать.
    Иногда может путаться знаковая/беззнаковая арифметика.
    Константы, перечислимые типы, многомерные массивы начаты, но нормально не работают, надо довести до ума.
    Глобальные переменные на самом деле локальные, в стеке.
    Не работает передача параметров по значению, если параметр нестандартного типа (массивы, записи...), передавайте по ссылке.
    Проблемы с обработкой символов ' " / \ в строковых константах, потому что код обработки был написан лет 5 назад по принципу "лишь бы запустилось". Переделывать его надо полностью.
    Отсутствует очень много семантических проверок. Если компилятор что-то "проглотил", это не значит что написано правильно
    Также давайте разделять сам компилятор с языком Паскаль, и библиотеки. Спрайты, скроллы, шрифты - это всё библиотеки, которые пишутся и прикручиваются отдельно. Вот этих библиотек у меня сейчас нет вообще. Если кто-то решит написать какую-нибудь демку или игру - спрашивайте, расскажу отдельно о прикручивании ассемблерных процедур.

    В общем, пробуйте, если что-то не работает - пишите, буду думать.

    bmpascal_v0.0.zip
    Последний раз редактировалось Bolt; 01.04.2018 в 09:52.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Пожелания и планы по эмулятору Башкирия-2М
    от b2m в разделе Эмуляторы отечественных компьютеров
    Ответов: 848
    Последнее: 30.10.2025, 20:37
  2. Пожелания и планы по эмулятору MESS
    от shattered в разделе Эмуляторы отечественных компьютеров
    Ответов: 57
    Последнее: 02.08.2017, 22:14
  3. Планы на новые создаваемые игры
    от TomCaT в разделе Игры
    Ответов: 67
    Последнее: 21.03.2012, 14:44
  4. Назад в будущее?
    от Sonic в разделе Оси
    Ответов: 27
    Последнее: 19.07.2005, 16:56

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •