User Tag List

Страница 5 из 18 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 213

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

Комбинированный просмотр

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

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

    По умолчанию

    А по-моему правильное ограничение, это не тот цикл, в котором можно прыгать туда-сюда. Сказано 10 раз, значит 10. При необходимости можно воспользоваться циклами while, repeat, или выйти из for при помощи break.

    Этот пользователь поблагодарил Bolt за это полезное сообщение:

    Reobne(29.10.2019)

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В общем, я выпустил первую бета-версию своего компилятора - ZX Like Pascal 0.9beta. Смотреть тут

  4. #3

    Регистрация
    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.

  5. #4

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,457
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    173
    Поблагодарили
    121 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    хорошо бы вид от Борман Паскаль.

    Цитата Сообщение от Bolt Посмотреть сообщение
    Иногда может путаться знаковая/беззнаковая арифметика.
    это фиаско!


    Цитата Сообщение от Bolt Посмотреть сообщение
    Глобальные переменные на самом деле локальные, в стеке.
    как это?

  6. #5

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

    По умолчанию

    Цитата Сообщение от Шынни Посмотреть сообщение
    хорошо бы вид от Борман Паскаль.
    Что? Какой вид?
    Цитата Сообщение от Шынни Посмотреть сообщение
    это фиаско!
    Это версия ноль-ноль
    Цитата Сообщение от Шынни Посмотреть сообщение
    как это?
    У глобальных переменных не статический абсолютный адрес, а так же выделяется stack frame, как и для любой подпрограммы.

  7. #6

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,457
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    173
    Поблагодарили
    121 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Что? Какой вид?
    собсно текстовый редактор


    - - - Добавлено - - -

    Цитата Сообщение от Bolt Посмотреть сообщение
    У глобальных переменных не статический абсолютный адрес, а так же выделяется stack frame, как и для любой подпрограммы.
    мне кажется, что это неправильно.

  8. #7

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

    По умолчанию

    Да, неправильно. Такого "неправильного" там порядка 160 пунктов, причём "добавить поддержку модулей" и "переписать кодогенератор" в списке тоже есть. Если реализовывать даже по одному пункту в день исключая выходные, то как раз работы до конца года. Но оно уже хоть как-то работает. Вот ещё текстового редактора не хватает, это да...

  9. #8

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Я тоже решил "пошутить" и выложить что есть
    Это хорошо. Слишком долго надоедает работать в стол, да и глаз замыливается. Я свой допиливал потом почти 2 года, пока не стала стабильная версия (на данный момент 9-я).

    Цитата Сообщение от Шынни Посмотреть сообщение
    У глобальных переменных не статический абсолютный адрес, а так же выделяется stack frame, как и для любой подпрограммы.
    мне кажется, что это неправильно.
    Это правильно, Н.Вирт в своей книжке такое тоже упоминал. Просто, лишний раз юзается стек, замедляет работу.

  10. #9

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

    По умолчанию

    версия 0.1

    исправления и дополнения:
    - арифметика signed integer;
    - вывод целых чисел;
    - многомерные массивы;
    - именованные константы const a=1; (пока только целые положительные);
    - библиотека zxlib.inc (clrscr, вывод текста);
    - inc(x,y) и dec(x,y) в system.inc.

    bmpascal_v0.1.zip

  11. #10

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

    По умолчанию

    Код:
    const
    	HERO_SPRITE:array [1..12] of byte = (1,0,0,71,$5a,$52,$3c,$10,$10,$18,$14,$14);
    	DEVIL_SPRITE:array [1..12] of byte = (1,0,0,3,$5a,$52,$3c,$10,$10,$18,$14,$14);
    
    begin
    	...
    	SpritePutClear(@HERO_SPRITE,x_hero-1,y_hero-1);
    	for i:=1 to volume_devils do SpritePutClear(@DEVIL_SPRITE,devil[i,1]-1,devil[i,2]-1);
    	...
    end.
    И это, блин, работает!

    Нажмите на изображение для увеличения. 

Название:	Снимок экрана от 2018-04-10 14-47-15.png 
Просмотров:	213 
Размер:	9.4 Кб 
ID:	64961

Страница 5 из 18 ПерваяПервая 123456789 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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