powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
Модераторы: Неуловимый Джо
21 сообщений из 21, страница 1 из 1
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138115
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
ссылка для скачивания
https://cloud.mail.ru/public/1KND/xbMLrR7a4

Creating Gear: An interpreter written in Free Pascal using an external tree visitor pattern
Jeroen de Haan

гитхаб автора.
там же эта книга в папке Doc
https://github.com/jdehaan2014/GearLanguage/tree/master/interpreter

This is a no-nonsense book about creating an interpreted programming language, named “Gear”, using an external visitor pattern. Why Gear? No particular reason, I just like the sound of it…
In this book I won’t describe a lot of theory, as there are plenty of good books out there. As a matter of fact, I do recommend reading a few of them, such as:

- Writing Compilers and Interpreters, A software emgineering approach (Ronald Mak)

- Language Implementation Patterns (Terence Parr)

Then, there are hands-on websites/blogs that describe and create an interpreter on-the-go:

- Let’s build a simple interpreter (https://ruslanspivak.com/lsbasi-part1/) (Ruslan Spivak)

- Crafting Interpreters (http://craftinginterpreters.com) (Bob Nystrom)

These books/blogs use Java or Python as programming language.

The code in this book is based on the programming language Object Pascal, a modern pascal version, and the free downloadable IDE ‘Lazarus’. Lazarus/Free Pascal is available for Windows, Linux, OSX, and many other Operatig Systems. It’s slogan is: ‘Write once, compile anywhere’! The website and download links are available at: http://www.lazarus-ide.org/index.php. For this book I use version 2.0.4 (or later) of Lazarus and version 3.04 (or later) of Free Pascal.
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138116
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Буду считать это своим "Coding kata".
Да и просто развлечение. Даже сделал проект на гитхабе, но это скорее для бэкапа.
Кое-что меняю, но по мелочи.
Снимок.PNG
...
Изменено: 09.10.2023, 19:49 - Неуловимый Джо
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138118
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Тема перенесена отсюда

https://nosql.itwrks.org/forum/topic.php?fid=16&tid=11905

тут буду писать продолжение.
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138119
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Забыл сказать, делаю на Delphi 11.3
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138120
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Добавил выражение (не оператор) Case.
Выбор из констант.
Снимок.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138121
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Для строк ограниченных апострофами добавлено экранирование апострофа (кавычки в таких строках считаются обычным символом).
Для строк ограниченных кавычками, добавлено экранирование кавычки (апостроф в такой строке считается обычным символом).

Это отсебятина, у автора строки ограничиваются только апострофами.
Снимок.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138122
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Краткое содержание предыдущих серий.
Снимок.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138124
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Пользователь назначен модератором темы: Неуловимый Джо.
...
Горбатый ёж:
Пользователь назначен модератором темы: Неуловимый Джо.
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138125
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А что там за входной язык ?
Где почитать про синтаксис ?


уже нашёл

https://github.com/jdehaan2014/GearLanguage/blob/master/interpreter/doc/The Gear language description.pdf
...
Изменено: 09.10.2023, 19:23 - defecator
Рейтинг: 1 / 0
Нравится: Неуловимый Джо
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138126
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
defecator  09.10.2023, 19:21
[игнорируется]
А что там за входной язык ?
Где почитать про синтаксис ?


уже нашёл

https://github.com/jdehaan2014/GearLanguage/blob/master/interpreter/doc/The Gear language description.pdf
Со многими его дизайнерскими решениями в плане дизайна языка я не согласился бы, но подобные книги на Паскале все равно редкость.
Я так понимаю это самиздат, книга не опубликована.
...
Изменено: 09.10.2023, 19:28 - Неуловимый Джо
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138132
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Следующее наверно буду делать интерполяцию строк (я делаю не по порядку, а что хочется в текущий момент).

То есть что-то вроде
'строка${5+5}продолжение строки'
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138135
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Интерполяция строк.
и даже с вызовом функций.
Снимок.PNG
...
Изменено: 11.10.2023, 22:10 - Неуловимый Джо
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138143
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Вернусь к главе о функциях, на выходным займусь анонимными.
Снимок2.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138145
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Краткая запись функций (стрелочный функции)
Снимок.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138146
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Возможно такой синтаксис будет удобнее для локальных функций.
Снимок.PNG
...
Изменено: 14.10.2023, 00:54 - Неуловимый Джо
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138147
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Анонимные функции!
Снимок.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138150
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Лямбды!
Снимок.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138158
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Кортежи (tuples)!!!
Снимок.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138191
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Интерпретация Dictionary уже работает.
С хэшами плюнул, в этом интерепретаторе всё хранится в Variant, не переделывать же сейчас всё на TObject.
А с Variant 1 и '1' это одно и то же.

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

Собственно, цель словаря в этом интерпретаторе будет только для упрощения получения данных с датасетов.
Чтоб можно было обращаться примерно так
Код: Delphi
1.
2.
row = ds[0] //ds это tuple строк
print(row['Field1'])
Только обращение к элементам словаря еще не сделал.
Снимок.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138216
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Словари (Dictionary)!
Снимок.PNG
...
Рейтинг: 0 / 0
Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
    #40138253
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор темы
Снимок (2).PNG
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Интерпретатор на паскале. Делаю по книге "Creating Gear: An interpreter written in Free Pascal" с небольшими правками.
Модераторы: Неуловимый Джо
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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