Начало » Программирование » Delphi » Книга "Creating Gear: An interpreter written in Free Pascal using an external tree visitor pattern"
Книга "Creating Gear: An interpreter written in Free Pascal using an external tree visitor pattern" [сообщение #3598] |
Thu, 02 November 2023 11:47 |
wildbill
Сообщений: 43 Зарегистрирован: November 2023
|
Member |
|
|
Всем привет!
Это не совсем книга, в смысле она не издана, самиздат автора.
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/inte rpreter
на всякий ссылка на маил-облако для скачивания этой книги отдельно https://cloud.mail.ru/public/1KND/xbMLrR7a4
Аннотация от автора:
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.
В общем, он в книге делает интерпретатор своего скриптового языка на паскале, используя Lazarus.
Я сейчас делаю по этой книге на делфях, с некоторыми изменениями, просто копировать было бы скучно
Книга очень понравилась, рекомендую.
[Обновления: Thu, 02 November 2023 11:48] Известить модератора
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Книга "Creating Gear: An interpreter written in Free Pascal using an external tree visitor pattern" [сообщение #3628 является ответом на сообщение #3626] |
Sun, 05 November 2023 15:12 |
wildbill
Сообщений: 43 Зарегистрирован: November 2023
|
Member |
|
|
SD писал(а) Sun, 05 November 2023 01:46Вообще-то "создать язык и его интерпретатор" это шаблонная курсовая работа ИТ-шного ВУЗ-а... Но я так понимаю, что фенька там именно в "external tree visitor pattern" что бы это ни значило. То есть стандартную задачу решают с супер-пупер ультра-модерным подвыподвертом.
Ну я интерпретаторы в институте не делал, как-то мимо меня прошло.
Что-то смутно помню что была такая тема, но таких курсовых чтобы сделать что-то работающее точно не было.
Чет не пойму откуда какая-то агрессия по отношению к книге?
Ну допустим тема стандартная и заезженная для кого-то, но для кого-то ведь и нет?
Мне вот было интересно
"То есть стандартную задачу решают с супер-пупер ультра-модерным подвыподвертом." - ну вот что это? Не читал, но осуждаю?
Никто ведь не заставляет читать?
External Visitor паттерн там всего лишь, что он не добавляет в иерархию методы AcceptVisitor, то есть вообще не меняет классы, которые нужно обходить, делает это с использованием методов RTTI.
Там это вообще мельком. На самом деле действительно интересный приём.
Просто такое вот название у книги, может не очень удачное.
Короче, кому тема интересна, рекомендую.
|
|
|
|
|
Re: Книга "Creating Gear: An interpreter written in Free Pascal using an external tree visitor pattern" [сообщение #3631 является ответом на сообщение #3630] |
Sun, 05 November 2023 15:42 |
wildbill
Сообщений: 43 Зарегистрирован: November 2023
|
Member |
|
|
Да и я сомневаюсь, что на курсовой в институте делали интерпретатор с рекурсией, локальными функциями, лямбдами и тп.
Язык расширяемый через "стандартные функции языка", можно добавлять свои функции уже на паскале, для работами например с файлами или датасетами, и использовать их уже в этом языке.
Ладно, может я такой восторженный, просто потому что плохо учился, и пропустил эту тему в институте.
Но мало ли, может кому-то еще пригодится, кому было бы интересно поковырять тему интрепретаторов, причем делать это в делфях.
|
|
|
|
Re: Книга "Creating Gear: An interpreter written in Free Pascal using an external tree visitor pattern" [сообщение #3635 является ответом на сообщение #3632] |
Mon, 06 November 2023 12:34 |
wildbill
Сообщений: 43 Зарегистрирован: November 2023
|
Member |
|
|
МорскойДесант писал(а) Mon, 06 November 2023 11:11Непонятна цель данного вязания. Если вы не собираетесь будущую варежку ни носить. ни продавать - в чем смысл? Впрочем, некоторые говорят, что вязание успокаивает.
У самурая нет цели
Серьезно, никакой практической цели.
Но мне было интересно.
Достаточно много книг по этой теме с использованием других языков, а тут паскаль.
Я, честно говоря, конкретно в object pascal середнячок, так-то работаю с Делфи, но больше базеданщик.
Вот для меня было два плюса, во первых сама тема интересна, а во вторых посмотреть примеры хорошего кода на современном паскале и потренировать их.
Но это так.
Главное, это реально было просто для удовольствия.
[Обновления: Mon, 06 November 2023 12:36] Известить модератора
|
|
|
|
|
|
|
|
Re: Книга "Creating Gear: An interpreter written in Free Pascal using an external tree visitor pattern" [сообщение #3641 является ответом на сообщение #3598] |
Mon, 06 November 2023 15:32 |
wildbill
Сообщений: 43 Зарегистрирован: November 2023
|
Member |
|
|
Вот например, мелочь, но приятно.
В яве приходится делать подобные методы, чтобы проверить символы возможные для чисел или идентификаторов. Для идентификаторов это будут цифры, буквы и подчеркивание
private boolean isDigit(char c) {
return c >= '0' && c <= '9';
}
в паскале это посимпатичнее
Underscore = ['_'];
LoCaseLetter = ['a'..'z'];
UpCaseLetter = ['A'..'Z'];
Letters = UpCaseLetter + LoCaseLetter;
AlphaChars = UpCaseLetter + LoCaseLetter + Underscore;
NumberChars = ['0'..'9'];
Ну и дальше в коде if ch in AlphaChars then...
Также и с токенами потом.
Красиво.
[Обновления: Mon, 06 November 2023 15:33] Известить модератора
|
|
|
|
|
|
|
Re: Книга "Creating Gear: An interpreter written in Free Pascal using an external tree visitor pattern" [сообщение #3647 является ответом на сообщение #3646] |
Mon, 06 November 2023 17:51 |
wildbill
Сообщений: 43 Зарегистрирован: November 2023
|
Member |
|
|
"Красиво, пока юникодные символы успешно транслируются в Byte."
В данном случае ожидаются только символы английского алфавита.
Ну может быть еще русского, если делать аналог 1С.
Да тут сами по себе множества, реально ведь красиво они потом и дальше используются с токенами (токены в виде Enum), ну и проверки на вхождение токена в в отдельные множества.
Не бог весть какое преимущество, я просто объясняю почему решил выбрать все-таки эту книгу из трёх.
Просто чтобы в процессе возни с пет-проектом "набивать руку" именно на паскалевских идиомах и "приёмах" .
[Обновления: Mon, 06 November 2023 17:51] Известить модератора
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Переход к форуму:
Текущее время: Tue Dec 10 08:40:02 GMT+3 2024
Общее время, затраченное на создание страницы: 0.01545 секунд
|