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

то есть
var a = 1, b =2
var tp = (a, b) // здесь будут копии величин, а не ссылки на переменные.
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #579353
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Наверно надо было изначально не на Variant, а на TObject завязываться.
Ну или как-то посложнее работу с указателями.
Ну да ладно.
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #579431
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Хоть просто способ вернуть несколько значений из функции.
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #579888
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
А кстати, тогда и массивы не нужны.
Добавить функции по добавлению элементов в кортеж да и все.
Этой структуры данных и хватит на все случаи для такого недоязыка.
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #580171
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Решил протестировать, сделать "стандартную функцию языка", которая будет возвращ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
Creating Gear: An interpreter written in Free Pascal
    #580237
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Снимок.PNG
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #580262
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Неуловимый Джо  20.10.2023, 17:20
[игнорируется]
А кстати, тогда и массивы не нужны.
Добавить функции по добавлению элементов в кортеж да и все.
Этой структуры данных и хватит на все случаи для такого недоязыка.
Так и сделал. Начинаю проникаться проектом, расширяю :)
Снимок.PNG
...
Изменено: 20.10.2023, 23:14 - Неуловимый Джо
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #580264
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Это уже отсебятина идет.
Он предполагал кортеж неизменяемого размера, и к элементам обращаться как a.1 или b.2

В общем язык вполне себе расширяемый.
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #580265
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
В принципе можно также и функции работы со строками, с файлами, датасетами, формами...
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #588121
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Начал делать Dictionary.
Это уже почти полностью своё, он там сначала делает классы, потом уже с использованием классов создаваемого языка Dictionary.
Я решил попроще как-то, тем более классы, методы, наследование и тд я в язык добавлять не собираюсь.
Пока только разбор AST (abstract syntax tree)
Снимок.PNG
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #588138
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
а вообще кортежи в качестве ключей запрещу нафиг.
это ведь еще c хэшфункциями возиться.
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #588183
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
А хотя что там возиться, найти где-нибудь как питон делает хеш для кортежей, да и скопипастить.
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #588338
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
или вообще, приводить кортежи к строке, да и использовать эту строку как ключ.
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #589102
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Интерпретация 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
Creating Gear: An interpreter written in Free Pascal
    #589387
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
По хорошему надо tuple переименовать в list.
И сделать в квадратных скобках.

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

выложил рекламу этой книги на sqlru.net, ожидаемо начался срач :)
...
Рейтинг: 2 / 0
Нравится: PaNik, Гарыныч
Creating Gear: An interpreter written in Free Pascal
    #597946
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Неужели реально такая заезженная тема и прям все-все-все делали свои интерпретаторы...
Только я один как-то этого избежал, поэтому мне одному эта тема и интересна :)
...
Рейтинг: 0 / 0
Creating Gear: An interpreter written in Free Pascal
    #597958
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Присваивание элементам словаря
Снимок.PNG
...
Рейтинг: 0 / 0
25 сообщений из 120, страница 4 из 5
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Creating Gear: An interpreter written in Free Pascal
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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