Гость
Map
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Creating Gear: An interpreter written in Free Pascal / 25 сообщений из 120, страница 4 из 5
14.10.2023, 14:34
    #573594
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Анонимные функции!
Самому начинает нравиться этот язык :)
Снимок.PNG
...
Рейтинг: 0 / 0
14.10.2023, 22:49
    #573829
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Лямбды как в шарпе
Снимок.PNG
...
Рейтинг: 0 / 0
19.10.2023, 23:00
    #579085
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Кортежи!
tuples
Снимок.PNG
...
Рейтинг: 0 / 0
19.10.2023, 23:02
    #579087
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Вызовы функций и кортежи там делаются через интерфейсы.
В Variant передается интерфейсный объект, и тут Lazarus слегка отличается от Delphi, пришлось повозиться с отладкой и поиском в StackOverlaw.
...
Рейтинг: 0 / 0
19.10.2023, 23:10
    #579091
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
И функция возвращает tuple, если не заметили :)
...
Рейтинг: 0 / 0
20.10.2023, 08:42
    #579312
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Правда пока только создание.
Чтение и изменение элементов еще не сделано.
...
Рейтинг: 0 / 0
20.10.2023, 09:41
    #579351
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Только трюков типа (a, b) = (b, a) тут не получится.
В этом интерпретаторе у него изначально всё как говорится ByVal.
Все переменные и константы это Variant.

то есть
var a = 1, b =2
var tp = (a, b) // здесь будут копии величин, а не ссылки на переменные.
...
Рейтинг: 0 / 0
20.10.2023, 09:42
    #579353
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Наверно надо было изначально не на Variant, а на TObject завязываться.
Ну или как-то посложнее работу с указателями.
Ну да ладно.
...
Рейтинг: 0 / 0
20.10.2023, 11:04
    #579431
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Хоть просто способ вернуть несколько значений из функции.
...
Рейтинг: 0 / 0
20.10.2023, 17:20
    #579888
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
А кстати, тогда и массивы не нужны.
Добавить функции по добавлению элементов в кортеж да и все.
Этой структуры данных и хватит на все случаи для такого недоязыка.
...
Рейтинг: 0 / 0
20.10.2023, 21:32
    #580171
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Решил протестировать, сделать "стандартную функцию языка", которая будет возвращfть tuple.

То есть эта функция, которую я пишу в Delphi, и которая потом будет использоваться в данном скриптовом языке будто это встроенная функция.
Программиста тут заботит только параметр AArgList, в данном случае он пустой.
Код: Delphi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function TPi.Call(AToken: TToken; AInterpreter: TInterpreter; AArgList: TArgList): Variant;
var
  Tuple: ITuple;
begin
  Tuple := ITuple(TTuple.Create);
  Tuple.Elements.Add('pi');
  Tuple.Elements.Add(pi);

  Result := Tuple;
end;
Снимок.PNG
...
Изменено: 20.10.2023, 21:33 - Неуловимый Джо
Рейтинг: 0 / 0
20.10.2023, 22:31
    #580237
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Снимок.PNG
...
Рейтинг: 0 / 0
20.10.2023, 23:08
    #580262
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Неуловимый Джо  20.10.2023, 17:20
[игнорируется]
А кстати, тогда и массивы не нужны.
Добавить функции по добавлению элементов в кортеж да и все.
Этой структуры данных и хватит на все случаи для такого недоязыка.
Так и сделал. Начинаю проникаться проектом, расширяю :)
Снимок.PNG
...
Изменено: 20.10.2023, 23:14 - Неуловимый Джо
Рейтинг: 0 / 0
20.10.2023, 23:10
    #580264
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Это уже отсебятина идет.
Он предполагал кортеж неизменяемого размера, и к элементам обращаться как a.1 или b.2

В общем язык вполне себе расширяемый.
...
Рейтинг: 0 / 0
20.10.2023, 23:16
    #580265
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
В принципе можно также и функции работы со строками, с файлами, датасетами, формами...
...
Рейтинг: 0 / 0
28.10.2023, 21:18
    #588121
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Начал делать Dictionary.
Это уже почти полностью своё, он там сначала делает классы, потом уже с использованием классов создаваемого языка Dictionary.
Я решил попроще как-то, тем более классы, методы, наследование и тд я в язык добавлять не собираюсь.
Пока только разбор AST (abstract syntax tree)
Снимок.PNG
...
Рейтинг: 0 / 0
28.10.2023, 21:26
    #588138
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
а вообще кортежи в качестве ключей запрещу нафиг.
это ведь еще c хэшфункциями возиться.
...
Рейтинг: 0 / 0
28.10.2023, 21:40
    #588183
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
А хотя что там возиться, найти где-нибудь как питон делает хеш для кортежей, да и скопипастить.
...
Рейтинг: 0 / 0
28.10.2023, 23:02
    #588338
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
или вообще, приводить кортежи к строке, да и использовать эту строку как ключ.
...
Рейтинг: 0 / 0
29.10.2023, 18:11
    #589102
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Интерпретация Dictionary уже работает.
С хэшами плюнул, в этом интерепретаторе всё хранится в Variant, не переделывать же сейчас всё на TObject.
А с Variant 1 и '1' это одно и то же.

Решил пойти по простому пути, ключом в словаре может быть только строка, все остальное будет приводиться к строке.

Собственно, цель словаря в этом интерпретаторе будет только для упрощения получения данных с датасетов.
Чтоб можно было обращаться примерно так
Код: Delphi
1.
2.
row = ds[0] //ds это tuple строк
print(row['Field1'])
Только обращение к элементам словаря еще не сделал.
Снимок.PNG
...
Изменено: 29.10.2023, 18:17 - Неуловимый Джо
Рейтинг: 0 / 0
29.10.2023, 22:43
    #589387
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
По хорошему надо tuple переименовать в list.
И сделать в квадратных скобках.

но уже лень.
...
Рейтинг: 0 / 0
05.11.2023, 00:22
    #597603
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Чтение элементов Dictionary
Снимок.PNG
...
Рейтинг: 0 / 0
05.11.2023, 15:26
    #597922
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
s62 [игнорируется] 

выложил рекламу этой книги на sqlru.net, ожидаемо начался срач :)
...
Рейтинг: 2 / 0
Нравится: PaNik, Гарыныч
05.11.2023, 16:17
    #597946
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Неужели реально такая заезженная тема и прям все-все-все делали свои интерпретаторы...
Только я один как-то этого избежал, поэтому мне одному эта тема и интересна :)
...
Рейтинг: 0 / 0
05.11.2023, 16:27
    #597958
Неуловимый Джо
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Creating Gear: An interpreter written in Free Pascal
Присваивание элементам словаря
Снимок.PNG
...
Рейтинг: 0 / 0
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Creating Gear: An interpreter written in Free Pascal / 25 сообщений из 120, страница 4 из 5
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (2): Анонимы (1), Bing Bot
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (1), Bing Bot
Пользователи онлайн (26): Анонимы (13), Sparrow, Yandex Bot, Bing Bot, Antonariy, Green, anonymous 1 мин., Буся 1 мин., Barkrowler 4 мин., Три нитки 6 мин., Ветер 6 мин., Умник-практикующий 8 мин., паразит 8 мин., prostozevs 8 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]