Лекции по построению компилятора на Pascal Delphi — среда быстрой разработки, где в качестве языка программирования используется Object Pascal. На сегодняшний день позволяет разрабатывать ПО для Microsoft Windows, Mac OS, iOS и Android и входит в состав Embarcadero RAD Studio https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal.feed 2022-09-13T05:07:53+07:00 Delphi help info@delphi-hlp.ru Joomla! - Open Source Content Management Булевы выражения 2017-07-24T21:34:09+07:00 2017-07-24T21:34:09+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/bulevy-vyrazheniya.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В пятой части этой серии мы рассмотрели управляющие конструкции и разработали подпрограммы синтаксического анализа для трансляции их в объектный код. Мы закончили с хорошим, относительно богатым набором конструкций. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Однако, когда мы оставили синтаксический анализатор, в наших возможностях существовал один большой пробел: мы не обращались к вопросу условия ветвления. Чтобы заполнить пустоту, я представил вам фиктивную подпрограмму анализа Condition, которая служила только как заменитель настоящей. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Одним из дел, которыми мы займемся на этом уроке, будет заполнение этого пробела  посредством расширения Condition до настоящего анализатора/транслятора. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/bulevy-vyrazheniya.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В пятой части этой серии мы рассмотрели управляющие конструкции и разработали подпрограммы синтаксического анализа для трансляции их в объектный код. Мы закончили с хорошим, относительно богатым набором конструкций. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Однако, когда мы оставили синтаксический анализатор, в наших возможностях существовал один большой пробел: мы не обращались к вопросу условия ветвления. Чтобы заполнить пустоту, я представил вам фиктивную подпрограмму анализа Condition, которая служила только как заменитель настоящей. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Одним из дел, которыми мы займемся на этом уроке, будет заполнение этого пробела  посредством расширения Condition до настоящего анализатора/транслятора. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/bulevy-vyrazheniya.html">Подробнее...</a></p> ВВЕДЕНИЕ 2017-07-24T20:36:17+07:00 2017-07-24T20:36:17+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/vvedenie.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: 'Times New Roman';">Эта серия статей является руководством по теории и практике разработки синтаксических анализаторов и компиляторов языков программирования. Прежде чем вы закончите чтение этой книги, мы раскроем все аспекты конструирования компиляторов, создадим новый язык программирования, и построим работающий компилятор. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/vvedenie.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: 'Times New Roman';">Эта серия статей является руководством по теории и практике разработки синтаксических анализаторов и компиляторов языков программирования. Прежде чем вы закончите чтение этой книги, мы раскроем все аспекты конструирования компиляторов, создадим новый язык программирования, и построим работающий компилятор. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/vvedenie.html">Подробнее...</a></p> Вид сверху 2017-08-02T20:48:29+07:00 2017-08-02T20:48:29+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/vid-sverkhu.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В предыдущих главах мы изучили многие из методов, необходимых для создания полноценного компилятора. Мы разработали операции присваивания (с булевыми и арифметическими выражениями), операторы отношений и управляющие конструкции. Мы все еще не обращались к вопросу вызова процедур и функций, но даже без них мы могли бы в принципе создать мини-язык. Я всегда думал, что было бы забавно просто посмотреть, насколько маленьким можно было бы построить язык, чтобы он все еще оставался полезным. Теперь мы уже почти готовы сделать это. Существует проблема: хотя мы знаем, как анализировать и транслировать конструкции, мы все еще совершенно не знаем, как сложить их все вместе в язык. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/vid-sverkhu.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В предыдущих главах мы изучили многие из методов, необходимых для создания полноценного компилятора. Мы разработали операции присваивания (с булевыми и арифметическими выражениями), операторы отношений и управляющие конструкции. Мы все еще не обращались к вопросу вызова процедур и функций, но даже без них мы могли бы в принципе создать мини-язык. Я всегда думал, что было бы забавно просто посмотреть, насколько маленьким можно было бы построить язык, чтобы он все еще оставался полезным. Теперь мы уже почти готовы сделать это. Существует проблема: хотя мы знаем, как анализировать и транслировать конструкции, мы все еще совершенно не знаем, как сложить их все вместе в язык. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/vid-sverkhu.html">Подробнее...</a></p> Интерпретаторы 2017-07-24T21:18:49+07:00 2017-07-24T21:18:49+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/interpretatory.html Super User toto44@inbox.ru <p style="text-align: center;"> </p> <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В трех первых частях этой серии мы рассмотрели синтаксический анализ и компиляцию математических выражений, постепенно и методично пройдя от очень простых одно-символьных "выражений", состоящих из одного терма, через выражения в более общей форме и закончив достаточно полным синтаксическим анализатором, способным анализировать и транслировать операции присваивания с много символьными токенами, вложенными пробелами и вызовами функций. Сейчас я собираюсь провести вас сквозь этот процесс еще раз, но уже с целью интерпретации а не компиляции объектного кода. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Если эта серия о компиляторах, то почему мы должны беспокоиться об интерпретаторах? Просто я хочу чтобы вы увидели как изменяется характер синтаксического анализатора при изменении целей. Я также хочу объединить понятия этих двух типов трансляторов, чтобы вы могли видеть не только различия но и сходства. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/interpretatory.html">Подробнее...</a></p> <p style="text-align: center;"> </p> <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В трех первых частях этой серии мы рассмотрели синтаксический анализ и компиляцию математических выражений, постепенно и методично пройдя от очень простых одно-символьных "выражений", состоящих из одного терма, через выражения в более общей форме и закончив достаточно полным синтаксическим анализатором, способным анализировать и транслировать операции присваивания с много символьными токенами, вложенными пробелами и вызовами функций. Сейчас я собираюсь провести вас сквозь этот процесс еще раз, но уже с целью интерпретации а не компиляции объектного кода. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Если эта серия о компиляторах, то почему мы должны беспокоиться об интерпретаторах? Просто я хочу чтобы вы увидели как изменяется характер синтаксического анализатора при изменении целей. Я также хочу объединить понятия этих двух типов трансляторов, чтобы вы могли видеть не только различия но и сходства. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/interpretatory.html">Подробнее...</a></p> Конструирование модулей 2017-08-02T21:32:23+07:00 2017-08-02T21:32:23+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/konstruirovanie-modulej.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"><span style="color: #333333; font-family: Tahoma;"> </span></span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">    ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Эта обучающая серия обещает стать возможно одной из самых долгоиграющих мини-серий в истории, конкурирующей только с задержкой на Томе IV Кнута. Начатая в 1988, эта серия вошла в четырехлетнюю паузу в 1990, когда "заботы мира сего", изменения в приоритетах и интересах и необходимость зарабатывать на жизнь казалось забросили ее после Главы 14. Долго терпевшие из вас были наконец вознаграждены весной прошлого года долгожданной Главой 15. В ней я начал попытку поставить серию обратно на рельсы и по ходу дела сделать ее проще для достижения цели, которая состоит в том, чтобы обеспечить вас не только достаточным пониманием трудных тем теории компиляции, но также достаточными инструментами в виде фиксированных подпрограмм и концепций, так чтобы вы были способны продолжать самостоятельно и стали достаточно опытными для того, чтобы создавать свои собственные синтаксические анализаторы и трансляторы. Из-за этой длинной паузы я подумал что следует вернуться назад и повторно рассмотреть концепции, которые мы до этого охватили а также заново сделать некоторые части программы. В прошлом мы никогда сильно не касались разработки программных инструментов промышленного качества... в конце концов я пытался обучать (и обучаться) концепциям, а не промышленной практике. Чтобы сделать это я старался давать вам не законченные компиляторы и анализаторы, а только те отрывки кода, которые иллюстрировали частные случаи, которые мы рассматривали в текущий момент. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/konstruirovanie-modulej.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"><span style="color: #333333; font-family: Tahoma;"> </span></span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">    ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Эта обучающая серия обещает стать возможно одной из самых долгоиграющих мини-серий в истории, конкурирующей только с задержкой на Томе IV Кнута. Начатая в 1988, эта серия вошла в четырехлетнюю паузу в 1990, когда "заботы мира сего", изменения в приоритетах и интересах и необходимость зарабатывать на жизнь казалось забросили ее после Главы 14. Долго терпевшие из вас были наконец вознаграждены весной прошлого года долгожданной Главой 15. В ней я начал попытку поставить серию обратно на рельсы и по ходу дела сделать ее проще для достижения цели, которая состоит в том, чтобы обеспечить вас не только достаточным пониманием трудных тем теории компиляции, но также достаточными инструментами в виде фиксированных подпрограмм и концепций, так чтобы вы были способны продолжать самостоятельно и стали достаточно опытными для того, чтобы создавать свои собственные синтаксические анализаторы и трансляторы. Из-за этой длинной паузы я подумал что следует вернуться назад и повторно рассмотреть концепции, которые мы до этого охватили а также заново сделать некоторые части программы. В прошлом мы никогда сильно не касались разработки программных инструментов промышленного качества... в конце концов я пытался обучать (и обучаться) концепциям, а не промышленной практике. Чтобы сделать это я старался давать вам не законченные компиляторы и анализаторы, а только те отрывки кода, которые иллюстрировали частные случаи, которые мы рассматривали в текущий момент. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/konstruirovanie-modulej.html">Подробнее...</a></p> Лексический анализ 2017-07-24T21:55:17+07:00 2017-07-24T21:55:17+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/leksicheskij-analiz.html Super User toto44@inbox.ru <p> </p> <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В последней главе я оставил вас с компилятором который должен почти работать, за исключением того, что мы все еще ограничены одно-символьными токенами. Цель этого урока состоит в том, чтобы избавиться от этого ограничения раз и навсегда. Это означает, что мы должны иметь дело с концепцией лексического анализатора (сканера). </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Возможно я должен упомянуть, почему нам вообще нужен лексический анализатор... в конце концов до настоящего времени мы были способны хорошо справляться и без него даже когда мы предусмотрели много символьные токены. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/leksicheskij-analiz.html">Подробнее...</a></p> <p> </p> <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В последней главе я оставил вас с компилятором который должен почти работать, за исключением того, что мы все еще ограничены одно-символьными токенами. Цель этого урока состоит в том, чтобы избавиться от этого ограничения раз и навсегда. Это означает, что мы должны иметь дело с концепцией лексического анализатора (сканера). </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Возможно я должен упомянуть, почему нам вообще нужен лексический анализатор... в конце концов до настоящего времени мы были способны хорошо справляться и без него даже когда мы предусмотрели много символьные токены. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/leksicheskij-analiz.html">Подробнее...</a></p> Назад в будущее 2017-08-02T21:23:03+07:00 2017-08-02T21:23:03+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/nazad-v-budushchee.html Super User toto44@inbox.ru <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">    ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Могло ли действительно пройти четыре года с тех пор, как я написал четырнадцатую главу этой серии? Действительно ли возможно, что шесть долгих лет прошли с тех пор как я начал ее? Забавно, как летит время когда вы весело его проводите, не так ли? </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Я не буду тратить много времени на извинения; просто подчеркну, что это случилось, и приоритеты меняются. За четыре года, начиная с четырнадцатой главы, я сумел стать уволенным, развестись, получить нервный срыв, начал новую карьеру как писатель, начал другую как консультант, двигался, работал на две системы реального времени и вырастил четырнадцать птенцов, трех голубей, шесть опоссумов и утку. Некоторое время синтаксический анализ исходного кода был не слишком высоко в моем списке приоритетов. Не написал ни одной вещи бесплатно, только за деньги. Но я пытаюсь быть верным и понимаю и чувствую свою ответственность перед вами, читателями, закончить то, что начал. Как сказала черепаха в одной из старых историй моего сына, я возможно медленная, но я надежная. Я уверен, что есть люди, стремящиеся увидеть последнюю катушку этого фильма, и я собираюсь дать им ее. Так что, если вы один из тех, кто ждал более или менее терпеливо, что из этого получится, благодарю за ваше терпение. Я приношу извинения за задержку. Давайте продолжим. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/nazad-v-budushchee.html">Подробнее...</a></p> <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">    ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Могло ли действительно пройти четыре года с тех пор, как я написал четырнадцатую главу этой серии? Действительно ли возможно, что шесть долгих лет прошли с тех пор как я начал ее? Забавно, как летит время когда вы весело его проводите, не так ли? </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Я не буду тратить много времени на извинения; просто подчеркну, что это случилось, и приоритеты меняются. За четыре года, начиная с четырнадцатой главы, я сумел стать уволенным, развестись, получить нервный срыв, начал новую карьеру как писатель, начал другую как консультант, двигался, работал на две системы реального времени и вырастил четырнадцать птенцов, трех голубей, шесть опоссумов и утку. Некоторое время синтаксический анализ исходного кода был не слишком высоко в моем списке приоритетов. Не написал ни одной вещи бесплатно, только за деньги. Но я пытаюсь быть верным и понимаю и чувствую свою ответственность перед вами, читателями, закончить то, что начал. Как сказала черепаха в одной из старых историй моего сына, я возможно медленная, но я надежная. Я уверен, что есть люди, стремящиеся увидеть последнюю катушку этого фильма, и я собираюсь дать им ее. Так что, если вы один из тех, кто ждал более или менее терпеливо, что из этого получится, благодарю за ваше терпение. Я приношу извинения за задержку. Давайте продолжим. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/nazad-v-budushchee.html">Подробнее...</a></p> Немного философии 2017-07-26T21:29:13+07:00 2017-07-26T21:29:13+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/nemnogo-filosofii.html Super User toto44@inbox.ru <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Этот урок будет отличаться от других уроков в нашей серии по синтаксическому анализу и конструированию компиляторов. На этом уроке не будет никаких экспериментов или кода. На этот раз я хотел бы просто поговорить с вами некоторое время. К счастью, это будет короткий урок и затем мы сможем продолжить с того места где остановились, надо надеяться с обновленной энергией. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Когда я учился в университете, я обнаружил, что могу всегда следить за профессорской лекцией намного лучше, если знал куда он идет. Готов поспорить, с вами было то же самое. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Так что я подумал, может быть пришло время рассказать вам куда мы идем с этой серией: что нас ждет в будущих главах и вообще что к чему. Я также поделюсь своими общими мыслями о полезности того, что мы делали. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/nemnogo-filosofii.html">Подробнее...</a></p> <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Этот урок будет отличаться от других уроков в нашей серии по синтаксическому анализу и конструированию компиляторов. На этом уроке не будет никаких экспериментов или кода. На этот раз я хотел бы просто поговорить с вами некоторое время. К счастью, это будет короткий урок и затем мы сможем продолжить с того места где остановились, надо надеяться с обновленной энергией. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Когда я учился в университете, я обнаружил, что могу всегда следить за профессорской лекцией намного лучше, если знал куда он идет. Готов поспорить, с вами было то же самое. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Так что я подумал, может быть пришло время рассказать вам куда мы идем с этой серией: что нас ждет в будущих главах и вообще что к чему. Я также поделюсь своими общими мыслями о полезности того, что мы делали. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/nemnogo-filosofii.html">Подробнее...</a></p> Пересмотр лексического анализа 2017-08-02T21:00:48+07:00 2017-08-02T21:00:48+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/peresmotr-leksicheskogo-analiza.html Super User toto44@inbox.ru <p> </p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">У меня есть хорошие и плохие новости. Плохие новости - эта глава не та, которую я вам обещал последний раз. Более того, и следующая глава также. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Хорошие новости в причине появления этой главы: я нашел способ упростить и улучшить  лексический анализатор компилятора. Позвольте мне объяснить. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/peresmotr-leksicheskogo-analiza.html">Подробнее...</a></p> <p> </p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">У меня есть хорошие и плохие новости. Плохие новости - эта глава не та, которую я вам обещал последний раз. Более того, и следующая глава также. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Хорошие новости в причине появления этой главы: я нашел способ упростить и улучшить  лексический анализатор компилятора. Позвольте мне объяснить. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/peresmotr-leksicheskogo-analiza.html">Подробнее...</a></p> Представление "TINY" 2017-08-02T20:55:10+07:00 2017-08-02T20:55:10+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/predstavlenie-tiny.html Super User toto44@inbox.ru <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В последней главе я показал вам основную идею нисходящей разработки компилятора. Я показал вам первые несколько шагов этого процесса для компиляторов Pascal и C, но я остановился далеко от его завершения. Причина была проста: если мы собираемся построить настоящий, функциональный компилятор для какого-нибудь языка, я предпочел бы сделать это для KISS, языка, который я определил в этой обучающей серии. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В этой главе мы собираемся сделать это же для подмножества KISS, которое я решил назвать TINY. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/predstavlenie-tiny.html">Подробнее...</a></p> <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В последней главе я показал вам основную идею нисходящей разработки компилятора. Я показал вам первые несколько шагов этого процесса для компиляторов Pascal и C, но я остановился далеко от его завершения. Причина была проста: если мы собираемся построить настоящий, функциональный компилятор для какого-нибудь языка, я предпочел бы сделать это для KISS, языка, который я определил в этой обучающей серии. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В этой главе мы собираемся сделать это же для подмножества KISS, которое я решил назвать TINY. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/predstavlenie-tiny.html">Подробнее...</a></p> Процедуры 2017-08-02T21:08:20+07:00 2017-08-02T21:08:20+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/protsedury.html Super User toto44@inbox.ru <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Наконец-то мы принимаемся за хорошую главу! </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">К этому моменту мы изучили почти все основные особенности компиляторов и синтаксического анализа. Мы узнали как транслировать арифметические выражения, булевы выражения, управляющие конструкции, объявления данных и операторы ввода/вывода. Мы определили язык TINY 1.3, который воплощает все эти возможности, и написали элементарный компилятор, который может их транслировать. Добавив файловый ввод/вывод мы могли бы действительно иметь работающий компилятор, способный производить выполнимые объектные файлы из программ, написанных на TINY. С таким компилятором мы могли бы писать простые программы, способные считывать целочисленные данные, выполнять над ними вычисления и выводить результаты. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/protsedury.html">Подробнее...</a></p> <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Наконец-то мы принимаемся за хорошую главу! </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">К этому моменту мы изучили почти все основные особенности компиляторов и синтаксического анализа. Мы узнали как транслировать арифметические выражения, булевы выражения, управляющие конструкции, объявления данных и операторы ввода/вывода. Мы определили язык TINY 1.3, который воплощает все эти возможности, и написали элементарный компилятор, который может их транслировать. Добавив файловый ввод/вывод мы могли бы действительно иметь работающий компилятор, способный производить выполнимые объектные файлы из программ, написанных на TINY. С таким компилятором мы могли бы писать простые программы, способные считывать целочисленные данные, выполнять над ними вычисления и выводить результаты. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/protsedury.html">Подробнее...</a></p> Разное 2017-08-02T21:04:56+07:00 2017-08-02T21:04:56+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/raznoe.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Эта глава - второе из тех отклонений в сторону, которые не вписываются в основное направление этой обучающей серии. Я упомянул в прошлый раз, что я накопил некоторые изменения, которые должны быть внесены в структуру компилятора. Поэтому я должен был отклониться чтобы разработать новую структуру и показать ее вам. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Теперь, когда все это позади, я могу сказать что я намерен сделать прежде всего. Это не должно занять много времени и затем мы сможем вернуться в основное русло. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Некоторые люди спрашивали меня о вещах, которые предоставляют другие языки, но к которым я пока что не обращался в этой серии. Две самых больших из них - это точки с запятой и комментарии. Возможно вы тоже задумывались о них и гадали как изменился бы компилятор если бы мы работали с ними. Только для того, чтобы вы могли проследовать дальше без тревожащего чувства, что что-то пропущено, мы рассмотрим здесь эти вопросы. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/raznoe.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Эта глава - второе из тех отклонений в сторону, которые не вписываются в основное направление этой обучающей серии. Я упомянул в прошлый раз, что я накопил некоторые изменения, которые должны быть внесены в структуру компилятора. Поэтому я должен был отклониться чтобы разработать новую структуру и показать ее вам. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Теперь, когда все это позади, я могу сказать что я намерен сделать прежде всего. Это не должно занять много времени и затем мы сможем вернуться в основное русло. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Некоторые люди спрашивали меня о вещах, которые предоставляют другие языки, но к которым я пока что не обращался в этой серии. Две самых больших из них - это точки с запятой и комментарии. Возможно вы тоже задумывались о них и гадали как изменился бы компилятор если бы мы работали с ними. Только для того, чтобы вы могли проследовать дальше без тревожащего чувства, что что-то пропущено, мы рассмотрим здесь эти вопросы. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/raznoe.html">Подробнее...</a></p> Синтаксический анализ выражений 2017-07-24T20:41:23+07:00 2017-07-24T20:41:23+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/sintaksicheskij-analiz-vyrazhenij.html Super User toto44@inbox.ru <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">     НАЧАЛО </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Если вы прочитали введение, то вы уже в курсе дела. Вы также скопировали программу Cradle в Turbo Pascal и откомпилировали ее. Итак, вы готовы. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Целью этой главы является обучение синтаксическому анализу и трансляции математических выражений. В результате мы хотели бы видеть серию команд на ассемблере, выполняющую необходимые действия. Выражение </span><span style="color: #000000; font-family: 'Times New Roman';">–</span><span style="color: #000000; font-family: 'Times New Roman';"> правая сторона уравнения, например: </span></p> <p style="margin: 8px 0px 8px 12px;"><span style="color: #000000; font-family: 'Courier New'; font-size: 10pt;">     x = 2*y + 3/(4*z)</span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В самом начале я буду двигаться очень маленькими шагами для того, чтобы начинающие из вас совсем не заблудились. Вы также получите несколько хороших уроков, которые хорошо послужат нам позднее. Для более опытных читателей: потерпите. Скоро мы двинемся вперед. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/sintaksicheskij-analiz-vyrazhenij.html">Подробнее...</a></p> <p style="text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">     НАЧАЛО </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Если вы прочитали введение, то вы уже в курсе дела. Вы также скопировали программу Cradle в Turbo Pascal и откомпилировали ее. Итак, вы готовы. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Целью этой главы является обучение синтаксическому анализу и трансляции математических выражений. В результате мы хотели бы видеть серию команд на ассемблере, выполняющую необходимые действия. Выражение </span><span style="color: #000000; font-family: 'Times New Roman';">–</span><span style="color: #000000; font-family: 'Times New Roman';"> правая сторона уравнения, например: </span></p> <p style="margin: 8px 0px 8px 12px;"><span style="color: #000000; font-family: 'Courier New'; font-size: 10pt;">     x = 2*y + 3/(4*z)</span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В самом начале я буду двигаться очень маленькими шагами для того, чтобы начинающие из вас совсем не заблудились. Вы также получите несколько хороших уроков, которые хорошо послужат нам позднее. Для более опытных читателей: потерпите. Скоро мы двинемся вперед. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/sintaksicheskij-analiz-vyrazhenij.html">Подробнее...</a></p> Снова выражения 2017-07-24T20:48:35+07:00 2017-07-24T20:48:35+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/snova-vyrazheniya.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В последней главе мы изучили методы, используемые для синтаксического анализа и трансляции математических выражений в общей форме. Мы закончили созданием простого синтаксического анализатора, поддерживающего выражения произвольной сложности с двумя ограничениями: </span></p> <div style="margin: 0px 0px 8px 24px; padding: 0px; text-align: justify; text-indent: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="24"><span style="color: #000000; font-family: 'Symbol'; font-size: 12pt; font-style: normal; text-decoration: none;">·</span></td> <td><span style="color: #000000; font-family: 'Times New Roman';">Разрешены только числовые показатели </span></td> </tr> </tbody> </table> </div> <div style="margin: 0px 0px 8px 24px; padding: 0px; text-align: justify; text-indent: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="24"><span style="color: #000000; font-family: 'Symbol'; font-size: 12pt; font-style: normal; text-decoration: none;">·</span></td> <td><span style="color: #000000; font-family: 'Times New Roman';">Числовые показатели ограничены одиночной цифрой. </span></td> </tr> </tbody> </table> </div> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В этой главе мы избавимся от этих ограничений. Мы также расширим то что сделали, добавив операции присваивания и вызовы функций. Запомните, однако, что второе ограничение было главным образом наложено нами самими... выбрано для удобства, чтобы облегчить себе жизнь и сконцентрироваться на фундаментальных принципах. Как вы увидите, от этого ограничения легко освободиться, так что не слишком задерживайтесь на этом. Мы будем использовать </span><span style="color: #000000; font-family: 'Times New Roman';">это прием пока он служит нам, уверенные в том, что сможем избавиться от него, когда будем готовы. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/snova-vyrazheniya.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В последней главе мы изучили методы, используемые для синтаксического анализа и трансляции математических выражений в общей форме. Мы закончили созданием простого синтаксического анализатора, поддерживающего выражения произвольной сложности с двумя ограничениями: </span></p> <div style="margin: 0px 0px 8px 24px; padding: 0px; text-align: justify; text-indent: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="24"><span style="color: #000000; font-family: 'Symbol'; font-size: 12pt; font-style: normal; text-decoration: none;">·</span></td> <td><span style="color: #000000; font-family: 'Times New Roman';">Разрешены только числовые показатели </span></td> </tr> </tbody> </table> </div> <div style="margin: 0px 0px 8px 24px; padding: 0px; text-align: justify; text-indent: 0px;"> <table style="line-height: normal;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr valign="baseline"> <td width="24"><span style="color: #000000; font-family: 'Symbol'; font-size: 12pt; font-style: normal; text-decoration: none;">·</span></td> <td><span style="color: #000000; font-family: 'Times New Roman';">Числовые показатели ограничены одиночной цифрой. </span></td> </tr> </tbody> </table> </div> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В этой главе мы избавимся от этих ограничений. Мы также расширим то что сделали, добавив операции присваивания и вызовы функций. Запомните, однако, что второе ограничение было главным образом наложено нами самими... выбрано для удобства, чтобы облегчить себе жизнь и сконцентрироваться на фундаментальных принципах. Как вы увидите, от этого ограничения легко освободиться, так что не слишком задерживайтесь на этом. Мы будем использовать </span><span style="color: #000000; font-family: 'Times New Roman';">это прием пока он служит нам, уверенные в том, что сможем избавиться от него, когда будем готовы. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/snova-vyrazheniya.html">Подробнее...</a></p> Типы 2017-08-02T21:17:06+07:00 2017-08-02T21:17:06+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/tipy.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В последней главе (Часть 13, Процедуры) я упомянул, что в ней и в следующей главе мы рассмотрим две возможности, которые помогут отделить игрушечный язык от настоящего, пригодного к использованию. В ней мы рассмотрели вызовы процедур. Многие из вас терпеливо ждали, начиная с Августа'89  когда я выдам вторую. Хорошо, вот она. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В этой главе мы поговорим о том, как работать с различными типами данных. Как и в последней главе, я не буду сейчас включать эти возможности непосредственно в компилятор TINY. Вместо этого я буду использовать тот же самый подход, который так хорошо служил нам в прошлом: использование только фрагментов синтаксического анализатора и одно-символьных токенов. Как обычно, это позволит нам добраться непосредственно до сути вопроса не продираясь сквозь массу ненужного кода. Так как основные проблемы при работе с множественными типами данных возникают в арифметических операциях, на них мы и сконцентрируем свое внимание. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/tipy.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В последней главе (Часть 13, Процедуры) я упомянул, что в ней и в следующей главе мы рассмотрим две возможности, которые помогут отделить игрушечный язык от настоящего, пригодного к использованию. В ней мы рассмотрели вызовы процедур. Многие из вас терпеливо ждали, начиная с Августа'89  когда я выдам вторую. Хорошо, вот она. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В этой главе мы поговорим о том, как работать с различными типами данных. Как и в последней главе, я не буду сейчас включать эти возможности непосредственно в компилятор TINY. Вместо этого я буду использовать тот же самый подход, который так хорошо служил нам в прошлом: использование только фрагментов синтаксического анализатора и одно-символьных токенов. Как обычно, это позволит нам добраться непосредственно до сути вопроса не продираясь сквозь массу ненужного кода. Так как основные проблемы при работе с множественными типами данных возникают в арифметических операциях, на них мы и сконцентрируем свое внимание. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/tipy.html">Подробнее...</a></p> Управляющие конструкции 2017-07-24T21:24:57+07:00 2017-07-24T21:24:57+07:00 https://delphi-hlp.ru/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/upravlyayushchie-konstruktsii.html Super User toto44@inbox.ru <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В четырех первых главах этой серии мы сконцентрировали свое внимание на синтаксическом анализе математических выражений и операций присваивания. В этой главе мы остановимся на новой и захватывающей теме: синтаксическом анализе и трансляции управляющих конструкций таких как, например, операторы IF. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Эта тема дорога для моего сердца, потому что является для меня поворотной точкой. Я играл с синтаксическим анализом выражений также как мы делали это в этой серии, но я все же чувствовал,  что нахожусь еще очень далеко от возможности поддержки полного языка. В конце концов, реальные языки имеют ветвления, циклы, подпрограммы и все такое. Возможно вы разделяли некоторые из этих мыслей. Некоторое время назад, тем не менее, я  должен был реализовать управляющие конструкции для структурного препроцессора ассемблера, который я писал. Вообразите мое удивление, когда я обнаружил, что это было гораздо проще, чем синтаксический анализ выражений, через который я уже прошел. Я помню подумал "Эй, это же просто!". После того, как мы закончим этот урок, я готов поспорить, что вы будете думать так же. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/upravlyayushchie-konstruktsii.html">Подробнее...</a></p> <p><span style="color: #000000; font-family: 'Arial'; font-size: 16pt; font-weight: bold;"> </span></p> <p style="margin: 16px 0px 4px; text-align: center;"><span style="color: #000000; font-family: 'Arial'; font-size: 14pt; font-weight: bold;">ВВЕДЕНИЕ </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">В четырех первых главах этой серии мы сконцентрировали свое внимание на синтаксическом анализе математических выражений и операций присваивания. В этой главе мы остановимся на новой и захватывающей теме: синтаксическом анализе и трансляции управляющих конструкций таких как, например, операторы IF. </span></p> <p style="margin: 0px 0px 8px; text-align: justify;"><span style="color: #000000; font-family: 'Times New Roman';">Эта тема дорога для моего сердца, потому что является для меня поворотной точкой. Я играл с синтаксическим анализом выражений также как мы делали это в этой серии, но я все же чувствовал,  что нахожусь еще очень далеко от возможности поддержки полного языка. В конце концов, реальные языки имеют ветвления, циклы, подпрограммы и все такое. Возможно вы разделяли некоторые из этих мыслей. Некоторое время назад, тем не менее, я  должен был реализовать управляющие конструкции для структурного препроцессора ассемблера, который я писал. Вообразите мое удивление, когда я обнаружил, что это было гораздо проще, чем синтаксический анализ выражений, через который я уже прошел. Я помню подумал "Эй, это же просто!". После того, как мы закончим этот урок, я готов поспорить, что вы будете думать так же. </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/skripty-kompillyatory-i-svyazannye-s-nimi-voprosy/lektsii-po-postroeniyu-kompilyatora-na-pascal/upravlyayushchie-konstruktsii.html">Подробнее...</a></p>