Синтаксис языка Prolog - Prolog. Синтаксис языка Prolog
В этом разделе статьи речь пойдет о синтаксисе языка, то есть о совокупности правил написания различных элементов и предложений (синтаксических конструкций) данного языка программирования.
Так как синтаксис немного меняется от реализации к реализации, для начала сделаем небольшое "лирическое отступление" о реализациях языка Prolog, поскольку синтаксис меняется от реализации к реализации. Существует большое количество реализаций языка Prolog, как коммерческих, так и свободно распространяемых. Мы будем ориентироваться на SWI-Prolog (www. swi-prolog. org), разработанный в университете города Амстердам. Возможностей данной реализации вполне достаточно для первоначального знакомства с основами логического программирования. SWI-Prolog распространяется под лицензией GPL, что обеспечивает возможность его использования без нарушений чьих-либо коммерческих интересов. Эта версия языка Prolog доступна как пользователям ОС Linux, так и пользователям Windows. Теперь можно перейти собственно к описанию синтаксиса языка.
У каждого имеются свои представления о том, какая форма синтаксиса наиболее естественна и наглядна. К счастью, синтаксис Пролога довольно прост и не дает большого простора для вариаций. Один из спорных вопросов - как следует отличать переменные от атомов. Здесь для обозначения переменных используются имена, начинающиеся с прописной буквы, а для обозначения атомов - со строчной. Кроме того, мы допускаем атомы, составленные из последовательностей знаков, таких как '*', '.' и '='. Некоторые Пролог-системы придерживаются в отношении использования прописных и строчных букв обратного соглашения (когда имена переменных начинаются со строчной буквы). Другие различают имена переменных за счет того, что начинают их со специальной литеры, как, например, '_PERSON' или '*PERSON'. Это удобно для систем, где прописные и строчные буквы не различаются. Другим моментом, где возможны расхождения, является способ записи утверждений - как заголовок утверждения отделяется от тела, как разделяются отдельные цели в теле и как обозначаются вопросы к системе. Для этого вполне могут употребляться атомы, отличные от ':-', '.' и '?-', или использоваться более сложные методы. В одной из ранних систем заголовок и цели утверждения размещались одно за другим, причем перед заголовком утверждения ставили знак '+', а перед каждой из подцелей - знак '-'. Короче говоря, вам могут встретиться способы записи утверждений, приведенные ниже, а также и отличные от них.
Uncle(X, Z):- parent(X, Y), brother(Y, Z).
Uncle(x, z) ‹- Parent(x, y) &; Brother(y, z).
UNCLE(_X,_Z):- PARENT(_X,_Y), BROTHER(_Y,_Z).
+UNCLE(*X,*Z) - PARENT(*X,*Y) - BROTHER(*Y,*Z).
((UNCLE X1 ХЗ) (PARENT X1 Х2) (BROTHER X2 ХЗ))
Uncle(X, Z): parent(X, Y); brother(Y, Z).
ТЕРМЫ. Заключение
Объекты данных в Прологе называются термами. Терм может быть константой, переменной или составным термом (структурой). Константами являются целые и действительные числа, например:
- 0, - l, 123.4, 0.23E-5, (некоторые реализации Пролога не поддерживают действительные числа).
К константам относятся также атомы, такие, как:
Голди, а, атом, +, :, 'Фред Блогс', [].
Атом есть любая последовательность символов, заключенная в одинарные кавычки. Кавычки опускаются, если и без них атом можно отличить от символов, используемых для обозначения переменных. Приведем еще несколько примеров атомов:
Abcd, фред, ':', Джо.
Полный синтаксис атомов описан ниже.
Как и в других языках программирования, константы обозначают конкретные элементарные объекты, а все другие типы данных в Прологе составлены из сочетаний констант и переменных.
Имена переменных начинаются с заглавных букв или с символа подчеркивания "_". Примеры переменных:
X, Переменная, _3, _переменная.
Если переменная используется только один раз, необязательно называть ее. Она может быть записана как анонимная переменная, состоящая из одного символа подчеркивания "_". Переменные, подобно атомам, являются элементарными объектами языка Пролог.
Завершает список синтаксических единиц сложный терм, или структура. Все, что не может быть отнесено к переменной или константе, называется сложным термом. Следовательно, сложный терм состоит из констант и переменных.
Теперь перейдем к более детальному описанию термов.
КОНСТАНТЫ
Константы известны всем программистам. В Прологе константа может быть атомом или числом.
ATOM язык prolog синтаксис
Атом представляет собой произвольную последовательность символов, заключенную в одинарные кавычки. Одинарный символ кавычки, встречающийся внутри атома, записывается дважды. Когда атом выводится на печать, внешние символы кавычек обычно не печатаются. Существует несколько исключений, когда атомы необязательно записывать в кавычках. Вот эти исключения:
- 1) атом, состоящий только из чисел, букв и символа подчеркивания и начинающийся со строчной буквы; 2) атом, состоящий целиком из специальных символов. К специальным символам относятся:
+ - * / ^ = : ; ? @ $ &;
Заметим, что атом, начинающийся с /*, будет воспринят как начало комментария, если он не заключен в одинарные кавычки.
Как правило, в программах на Прологе используются атомы без кавычек.
Атом, который необязательно заключать в кавычки, может быть записан и в кавычках. Запись с внешними кавычками и без них определяет один и тот же атом.
Внимание: допустимы случаи, когда атом не содержит ни одного символа (так называемый 'нулевой атом') или содержит непечатаемые символы. (В Прологе имеются предикаты для построения атомов, содержащих непечатаемые или управляющие символы.) При выводе таких атомов на печать могут возникнуть ошибки.
Похожие статьи
-
Правила формального описания синтаксиса языка программирования - Основы программирования
Под синтаксисом языка программирования понимают правила построения корректных конструкций данного языка. Синтаксис языка можно описать формально. Для...
-
История создания и развития языка - Prolog. Синтаксис языка Prolog
Разработка языка Prolog началась в 1970 году Аланом Кулмероэ и Филиппом Расселом. Их целью было создание языка, который мог бы делать логические...
-
Введение - Prolog. Синтаксис языка Prolog
Prolog -- язык логического программирования. Логическое программирование, так же как и родственное ему направление -- функциональное программирование,...
-
Каждый компьютер имеет свой машинный язык, то есть свою совокупность машинных команд, которая отличается количеством адресов в команде, назначением...
-
Подпрограммы - Язык программирования PERL. Сфера применения
Как и все структурированные языки программирования, Perl поддерживает подпрограммы. Подпрограмма может быть определена с помощью ключевого слова sub, как...
-
Принцип работы языка. Синтаксис Как и было сказано ранее основой для HTML-были приняты текстовые документы, содержащие в себе HTML5. Рассмотрим следующий...
-
Резюме - Язык программирования PERL. Сфера применения
В этой главе рассмотрено введение в программирование на языке Perl. Используя рассмотренные здесь концепции, можно писать сложные скрипты CGI на языке...
-
ТЕОРЕТИЧЕСКОЕ ОБОСНОВАНИЕ ЗАДАЧИ, Строковый тип данных в языке Pascal - Строковый тип данных
Строковый тип данных в языке Pascal Познакомимся с типом данных, который относится к числу структурированных. Это строковый тип данных (строка). Строка -...
-
СТРОКИ. ОПИСАНИЕ ТИПА - Язык программирования Паскаль
Для обработки последовательностей символов в ТУРБО - ПАСКАЛЕ предусмотрены строчные типы. Строчные типы - это структурные типы. Количество символов в...
-
Основные типы данных языка Си - Основы программирования
Язык Си относится к языку с жестко определенными типами данных: каждое имя всегда обозначает объект некоторого типа, причем этот тип нельзя изменить до...
-
Цель работы - Разработка компилятора подмножества языка Паскаль на язык Ассемблера
Изучение составных частей, основных принципов построения и функционирования компиляторов. Создание компилятора с заданного подмножества языка Паскаль с...
-
Скалярные переменные - Язык программирования PERL. Сфера применения
Как отмечалось, скалярная переменная может содержать единственное значение. В языке Perl имена скалярных переменных всегда начинаются со знака ($). В еле...
-
Использование языка PERL для написания CGI-cкриптов - Язык программирования PERL. Сфера применения
Как вы узнали из предыдущей главы, CGI обеспечивает узлам Web вoзмoжнoсть интерактивной работы с клиентскими программами, в качестве которых обычно...
-
Основные понятия алгоритмического языка - Алгоритмический язык Pascal
СОСТАВ ЯЗЫКА. Обычный разговорный язык состоит из четырех основных элементов: символов, слов, словосочетаний и предложений. Алгоритмический язык содержит...
-
Языки функционального программирования - Функциональные языки программирования
В этом разделе приведено краткое описание некоторых языков функционального программирования (очень немногих). Дополнительную информацию можно почерпнуть,...
-
Рисунок 6 - Трубная цилиндрическая резьба с допусками. Координаты точек отображены в таблице 1 приложения Д Копирование построенной резьбы: Выделяем...
-
Платформа. NET Framework - Программирование на языке C++
.NET Framework - программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common...
-
Чистота (отсутствие побочных эффектов) - Функциональные языки программирования
В императивных языках функция в процессе своего выполнения может читать и модифицировать значения глобальных переменных и осуществлять ввод/вывод....
-
Реализация кода Хаффмана на языке PHP
Аннотация Цель данной статьи разработать учебный шаблон, который позволит приобрести необходимые навыки и знания для понимания, использования и...
-
Назначение и краткая характеристика встроенного языка Встроенный язык системы 1С: Предприятие предназначен для описания (на стадии разработки...
-
Завершив выбор схемы работы системы и общего принципа работы ее частей и выбрав тип базы данных, следует перейти к выбору языка программирования....
-
Язык Ассемблера - Компьютерный парк централизованной библиотечной системы
Язык ассеемблера (англ. assemblylanguage) - машино-ориентированный язык низкого уровня с командами, обычно соответствующими командам машины, который...
-
Технология программирования Для реализации поставленной задачи наиболее удобной парадигмой программирования будет являться объектно-ориентированная...
-
Объектно-ориентированное программирование (ООП) является парадигмой программирования, которая представляет понятия, как "объекты", которые имеют поля...
-
МОДУЛИ - Язык программирования Паскаль
Наличие модулей в Turbo Pascal позволяет программировать и отлаживать программу по частям, создавать библиотеки подпрограмм и данных, воспользоваться...
-
ОПЕРАТОР ВВОДА ДЛЯ ЧТЕНИЯ ФАЙЛА, ОПЕРАТОР ВЫВОДА - Язык программирования Паскаль
Оператор ввода для чтения файла обладает всеми свойствамии обычного оператора READ. Вкачестве параметров могут быть переменные; каждая переменная поучает...
-
Введение, Теоретические основы - Разработка консольного приложения на языке С++
Данная работа посвящена созданию своего рода базы данных на языке программирования С++. База данных содержит информацию о сотрудниках этого предприятия,...
-
Для программирования агентов могут применяться: универсальные языки (Java, C++ , Visual Basic и др.), языки представления знаний (SL, KIF), языки...
-
В нашей курсовой работе была поставлена задача создания обучающей программы по информатике, с помощью которой студенты смогут проверить свои знания в...
-
Заключение, Используемая литература - Языки программирования
Языки программирования как люди -- рождаются и умирают. Одни живут дольше, чем другие, другие появляются на свет только для того, чтобы оказаться никому...
-
Отложенные (ленивые) вычисления - Основные свойства функциональных языков программирования
В традиционных языках программирования (например, C++) вызов функции приводит к вычислению всех аргументов. Этот метод вызова функции называется...
-
Чистота (отсутствие побочных эффектов) - Основные свойства функциональных языков программирования
В императивных языках функция в процессе своего выполнения может читать и модифицировать значения глобальных переменных и осуществлять операции...
-
Основы функционального программирования - Основные свойства функциональных языков программирования
Функциональное программирование - раздел дискретной математики и парадигма программирования (совокупность идей и понятий, определяющая стиль написания...
-
История функционального программирования - Основные свойства функциональных языков программирования
Широко известно, что теоретические основы императивного программирования были заложены еще в 30-х годах XX века учеными Аланом Тьюрингом и Джоном фон...
-
Язык PASCAL - Языки программирования
В 1970 г. известный швейцарский ученый профессор Никлаус Вирт создал собственный язык программирования, в котором постарался избавиться от всех...
-
Ввиду того, что для языка JAPE не предусмотрен специализированный редактор, разработчики рекомендуют использовать Vim[10] или Eclipse[11], ассоциировав...
-
FBD (Function Block Diagram) - является графическим языком программирования. Предназначенный для программирования микро контролеров с помощью блок...
-
Заключение, Список использованной литературы - Создание сайта на языке HTML
В этом проекте был рассмотрен язык разметки гипертекстовых документов HTML, его основные функции свойства и параметры. Сегодня применение HTML...
-
Правила записи программы на языке Си - Основы программирования
Как указывалось выше, программа перед обработкой компьютером должна быть помещена в файл на диске. Обычно этот файл имеет расширение <.c>. Рассмотрим...
-
Принципы SOLID - Программирование на языке C++
SOLID - мнемонический акроним, введенный Майклом Фэзерсом ( Michael Feathers ) для первых пяти принципов, названных Робертом Мартином в начале 2000-х,...
Синтаксис языка Prolog - Prolog. Синтаксис языка Prolog