Начало » Программирование » 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 Nov 04 15:53:09 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.03010 секунд 
 |