Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коммандный файл для SWI в Windows 
:(
    Опции темы
tumanovalex
  Дата 29.9.2011, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 3.1.2005

Репутация: нет
Всего: нет



Есть программа на SWI (кусок из нее) в файле my.pl:
Код
родитель('Петр', 'Алексей').
родитель('Галина', 'Алексей').
родитель('Владимир', 'Елена').
родитель('Наталья', 'Елена').
родитель('Алексей', 'Мария').
родитель('Елена', 'Мария').
ребенок(Y, X)      :- родитель( X, Y).
потомок(X, Y)      :- родитель(Y, X).
потомок(X, Z)      :- ребенок(X, Y), потомок(Y, Z).
предок(X, Z)       :- родитель(X, Z).
предок(X, Z)       :- родитель(X, Y), предок( Y, Z).
С помощью Consult я загружаю этот файл и после приглашения ввожу: предок(X, 'Мария'). и получаю список предков. Затем ввожу потомок(X, 'Петр'). и получаю список потомков. А можно ли создать файл с командами для SWI, при двойном щелчке на котором загружался бы файл my.pl, из коммандного файла брались бы цели и в SWI появлялся результат?

PM MAIL   Вверх
tap1956
  Дата 29.9.2011, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.9.2011

Репутация: нет
Всего: нет



Мне тоже это очень интересно.
PM MAIL   Вверх
Cheloveck
Дата 29.9.2011, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 1
Всего: 32



Люди! Читайте документацию перед тем, как задавать вопросы!
http://www.swi-prolog.org/pldoc/doc_for?ob...e.html%27%29%29
Цитата

2.4.2 Running goals from the commandline

-g goal
    Goal is executed just before entering the top level. Default is a predicate which prints the welcome message. The welcome message can be be suppressed with --quiet, but also with -g true. goal can be a complex term. In this case quotes are normally needed to protect it from being expanded by the shell. A safe way to run a goal non-interactively is here:

    % swipl <options> -g go,halt -t 'halt(1)'

-t goal
    Use goal as interactive top-level instead of the default goal prolog/0. goal can be a complex term. If the top-level goal succeeds SWI-Prolog exits with status 0. If it fails the exit status is 1. If the toplevel raises an exception, this is printed as an uncaught error and the toplevel is restarted. This flag also determines the goal started by break/0 and abort/0. If you want to stop the user from entering interactive mode start the application with `-g goal' and give `halt' as top-level. 



--------------------
user posted image
PM Jabber   Вверх
tumanovalex
  Дата 29.9.2011, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 3.1.2005

Репутация: нет
Всего: нет



Прочитал, но видимо не понял. Сделал bat-файл со строкой 
Код
swipl -s my.pl -t 'предок(X, 'Мария')'.
, пишет, что ошибка окончания файла строки с кавычками. Как все-таки в моем случае слелать коммандный файл?

PM MAIL   Вверх
Фантом
Дата 29.9.2011, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 6
Всего: 49



Цитата(tumanovalex @  29.9.2011,  22:26 Найти цитируемый пост)
Как все-таки в моем случае слелать коммандный файл?


Сделайте в программе дополнительную служебную цель без аргументов (пусть она называется goal, это не обязательно, но общепринято), вставьте в нее вызов того, что Вам хочется, а потом вызов halt. Т.е. что-то вроде
Код

goal :- предок(X, 'Мария'),halt.


А затем в консоли наберите swipl -g goal -o result -c my.pl

Часть -o result необязательна - это задание имени для исполняемого файла ("result"). Если это убрать, получится, как обычно, "a.out".
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.1239 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.