powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Creating Gear: An interpreter written in Free Pascal, Поиск: Искать сообщения, созданные автором: Неуловимый Джо  
25 сообщений из 107, страница 4 из 5
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #579888
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
А кстати, тогда и массивы не нужны.
Добавить функции по добавлению элементов в кортеж да и все.
Этой структуры данных и хватит на все случаи для такого недоязыка.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / 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
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #580237
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
Снимок.PNG
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #580262
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
Неуловимый Джо  20.10.2023, 17:20
[игнорируется]
А кстати, тогда и массивы не нужны.
Добавить функции по добавлению элементов в кортеж да и все.
Этой структуры данных и хватит на все случаи для такого недоязыка.
Так и сделал. Начинаю проникаться проектом, расширяю :)
Снимок.PNG
...
Изменено: 20.10.2023, 23:14 - Неуловимый Джо
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #580264
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
Это уже отсебятина идет.
Он предполагал кортеж неизменяемого размера, и к элементам обращаться как a.1 или b.2

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

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

выложил рекламу этой книги на sqlru.net, ожидаемо начался срач :)
...
Рейтинг: 2 / 0
Нравится: PaNik, Гарыныч
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #597946
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
Неужели реально такая заезженная тема и прям все-все-все делали свои интерпретаторы...
Только я один как-то этого избежал, поэтому мне одному эта тема и интересна :)
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #597958
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
Присваивание элементам словаря
Снимок.PNG
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #597959
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
Надо еще мелочи типа ContainsKey и возврата коллекции ключей.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #598716
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
Неуловимый Джо  20.10.2023, 09:41
[игнорируется]
Только трюков типа (a, b) = (b, a) тут не получится.
В этом интерпретаторе у него изначально всё как говорится ByVal.
Все переменные и константы это Variant.
А хотя что я туплю.
Это ведь просто доработать присваивания.
добавить если слева и справа кортежи,
то просто присваивать в цикле.

Делов-то :)
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #598754
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
хотя нет, туплю опять.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #603530
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
IT-Клоп  09.11.2023, 13:23
[игнорируется]
Неуловимый Джо  05.11.2023, 16:17
[игнорируется]
Неужели реально такая заезженная тема и прям все-все-все делали свои интерпретаторы...
Только я один как-то этого избежал, поэтому мне одному эта тема и интересна :)
У Учителя нашего, Герберта Шилдта, в каждой книжке последовательно (C, C++, Java etc.) в качестве одной из глав шло упражнение по написанию интерпретатора Basic.
ну одной главой-то там не обойдешься, скорее всего там просто пример так называемого сканера.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #603532
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
IT-Клоп  09.11.2023, 13:23
[игнорируется]
Неуловимый Джо  05.11.2023, 16:17
[игнорируется]
Неужели реально такая заезженная тема и прям все-все-все делали свои интерпретаторы...
Только я один как-то этого избежал, поэтому мне одному эта тема и интересна :)
У Учителя нашего, Герберта Шилдта, в каждой книжке последовательно (C, C++, Java etc.) в качестве одной из глав шло упражнение по написанию интерпретатора Basic.
Я кстати Шилдта не читал.
По си помню читал Кернигана и Ричи.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #603541
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
IT-Клоп  09.11.2023, 13:23
[игнорируется]
Неуловимый Джо  05.11.2023, 16:17
[игнорируется]
Неужели реально такая заезженная тема и прям все-все-все делали свои интерпретаторы...
Только я один как-то этого избежал, поэтому мне одному эта тема и интересна :)
У Учителя нашего, Герберта Шилдта, в каждой книжке последовательно (C, C++, Java etc.) в качестве одной из глав шло упражнение по написанию интерпретатора Basic.
Ну в любом случае, тут именно на паскале, интересно ведь :)
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #629462
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
Добавил сложение кортежей.

Это уже в 12й версии :)

Нужно переделать кортежи в списки, потому что они уже и есть списки во всем, кроме названия.
В них можно добавлять элементы, их можно складывать.

Нужно переделать их с круглых скобок на квадратные и везде в коде Tuple заменить на List.
Снимок.PNG
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #629480
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
И +=
12я версия мне добавила вдохновения.
Снимок.PNG
Снимок.PNG
...
Изменено: 25.11.2023, 18:22 - Неуловимый Джо
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Creating Gear: An interpreter written in Free Pascal
    #630105
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
Добавил что если к списку прибавить выражение, то будет добавляться элемент результат данного выражения.
Снимок.PNG
...
Рейтинг: 0 / 0
25 сообщений из 107, страница 4 из 5
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Creating Gear: An interpreter written in Free Pascal, Поиск: Искать сообщения, созданные автором: Неуловимый Джо  
Читали тему (3): Анонимы (1), Yandex Bot, Bing Bot
Игнорируют тему (1): erbol
Читали форум (3): Анонимы (1), Yandex Bot, Bing Bot
Пользователи онлайн (25): Анонимы (17), zNomad, Yandex Bot, Bing Bot, Green, sergey11 6 мин., Сталкер 8 мин., prostozevs 8 мин., паразит 9 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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