Прочитал в википедии, что распространению CLIPS в России мешает то, что он не поддерживает русский язык. Итак спешу опровергнуть это утверждение, по крайней мере для систем UNIX/LINUXДля русификации CLIPS при генерации из исходных текстов для платформ UNIX/LINUX достаточно в коде функции main файла main.c внести изменения:
setlocale(LC_ALL, "ru_RU.KOI8-R");
setlocale(LC_NUMERIC, "C");и CLIPS будет понимать русскую кодировку koi8r не только в значениях переменных, фактах и комментариях, но и в названиях функций и именах переменных. После чего можно писать простые приложения, выполняемые как обычные приложения UNIX. Вот простой пример:
#!/u01/bin/clips -f2
;;путь где у меня расположен интерпретатор clips
;;пример написания и вызова функции на языке CLIPS в обычном процедурном стиле(deffunction гипотенуза (?a ?b)
(sqrt (+ (* ?a ?a) (* ?b ?b)))
)(defrule main
=>
(bind ?результат (гипотенуза 3.0 4.0))
(printout t "гипотенуза = " ?результат crlf)
)(reset)
(run)
(exit)
URL:
Обсуждается: http://www.opennet.dev/tips/info/2420.shtml
Отлично. Вот только пользуется кто-нибудь этим клипсом ещё?
из практического интереса спрашиваю, не холивара ради...
а что посоветуете?
ХОП-шники конечно же пользоваться не будут
Стесняюсь спросить, ХОП-шники это что такое?
21 век, ГДЕ ЮНИКОД???
так клипсом и не пользуются в россии, потому что про руссификацию нет информации. взять ту же книгу Частикова Разработка экспертных систем. среда CLIPS там тоже прямо говориться что русского языка там нет и не будет.(хотя сама эта книжка на половину это всего лишь перевод документации клипса распространяемой бесплатно )) )за юникод не возьмусь, попробоовать поддержать можно таким же способом (замените ru_RU.KOI8-R на ru_RU.utf8). но многобайтовый символы, могут вызвать проблему в парсере clipsа. надо тестировать. попробуйте если вы фанат юникода. я и в 21 веке пользуюсь кои8р и никак не страдаю. в данном контексте юникод может пригодиться для разработки ммм... полинациональных правил... хотя данный вопрос обычно решается по другому.
Вот только полной русификацией это не назовешь.
(deffunction гипотенуза (?a ?b)
Получив русскую гипотенузу обычно требуют "а почему deffunction, а не ЗадатьФункцию"? Не можешь? Фи...
>[оверквотинг удален]
> =>
> (bind ?результат (гипотенуза 3.0 4.0))
> (printout t "гипотенуза = "
> ?результат crlf)
> )
> (reset)
> (run)
> (exit)
> URL:
> Обсуждается: http://www.opennet.dev/tips/info/2420.shtmlДобавить библиотеку надо еще #include <locale.h>
>[оверквотинг удален]
>> (bind ?результат (гипотенуза 3.0 4.0))
>> (printout t "гипотенуза = "
>> ?результат crlf)
>> )
>> (reset)
>> (run)
>> (exit)
>> URL:
>> Обсуждается: http://www.opennet.dev/tips/info/2420.shtml
> Добавить библиотеку надо еще #include <locale.h>странно, у меня этот инклюд делается в setup.h, вероятно разные версии клипса.
но если у кого не будет компилироваться, то да - надо.
NuINu, нужна помощь человека разбирающегося в CLIPS.Можно с вами связаться через почту или icq?
NuINu, нужна помощь человека разбирающегося в CLIPS.Можно с вами связаться через почту или icq? моя почта:julya--shka@yandex.ru
К сожалению когда руссифицировал клипс, я совсем забыл о сортировке, а вернее о сравнении строк. В указанном выше совете клипс учиться воспринимать русские буквы, но сортировать(сравнивать строки) правильно не может.
но исправить это можно весьма просто, заменив функцию сравнения строк strcmp(не работающую с текущей локалью) на функцю strcoll в модуле strngfun.c.Я это сделал так, добавил после всех #include строку переопределения функции:
#define strcmp(s1, s2) strcoll((s1), (s2))проверить можно простой программой:
#!/usr/local/bin/clips -f2
;;протестируем функцию сортировки строк(deffunction string> (?a ?b)
(> (str-compare ?a ?b) 0)
)(defrule main
=>
(bind ?list (create$ первый второй а елка ешка ёлка ёмкость третий четвертый аах ха хаа хам пятый шестой седьмой а восьмой восьмоой восьмый амма ам))
(printout t "Исходный список: " ?list crlf)
(bind ?list (sort string> ?list))
(printout t "Отсортированный список: " ?list crlf))
(reset)
(run)
(exit)
Здравствуйте!Добавил код
setlocale(LC_ALL, "ru_RU.KOI8-R");
setlocale(LC_NUMERIC, "C");
в файл в main.c, так же добавил строку #include <locale.h>, но после построения всего проекта запускаю исполняемый файл, а русские символы все равно не печатаются. Где я ошибся?может кто нибудь поправит?Я начинающий программист.
> Здравствуйте!Добавил код
> setlocale(LC_ALL, "ru_RU.KOI8-R");
> setlocale(LC_NUMERIC, "C");
> в файл в main.c, так же добавил строку #include <locale.h>, но после
> построения всего проекта запускаю исполняемый файл, а русские символы все равно
> не печатаются. Где я ошибся?может кто нибудь поправит?Я начинающий программист.А какая у вас локаль в терминале? и в какой кодировке вы пишете программу? проверьте все, в моем варианте все должно быть в кои8
и еще вопрос, пусть русские буквы не печатаются, а программа ругается на плохие символы в программе?
>[оверквотинг удален]
>> setlocale(LC_ALL, "ru_RU.KOI8-R");
>> setlocale(LC_NUMERIC, "C");
>> в файл в main.c, так же добавил строку #include <locale.h>, но после
>> построения всего проекта запускаю исполняемый файл, а русские символы все равно
>> не печатаются. Где я ошибся?может кто нибудь поправит?Я начинающий программист.
> А какая у вас локаль в терминале? и в какой кодировке вы
> пишете программу? проверьте все, в моем варианте все должно быть в
> кои8
> и еще вопрос, пусть русские буквы не печатаются, а программа ругается на
> плохие символы в программе?Упустил один момент - вы ведь, как я понял, имели ввиду консольную версию, а я ClIPSWin мучаю. Но все же я еще раз перекомпилировал, и теперь интересующий меня исполняемый файл ClIPSWin.exe понимает русские символы локали KOI8-R, но не печатает их. Жаль, приходится редактировать clp файл в текстовом редакторе и только после этого лоадить их в clips Было бы здорово внести изменения в исходный код интерфейса ClIPSWin, чтоб он научился печатать наш великий и могучий)
>[оверквотинг удален]
>> кои8
>> и еще вопрос, пусть русские буквы не печатаются, а программа ругается на
>> плохие символы в программе?
> Упустил один момент - вы ведь, как я понял, имели ввиду консольную
> версию, а я ClIPSWin мучаю. Но все же я еще раз
> перекомпилировал, и теперь интересующий меня исполняемый файл ClIPSWin.exe понимает русские
> символы локали KOI8-R, но не печатает их. Жаль, приходится редактировать clp
> файл в текстовом редакторе и только после этого лоадить их в
> clips Было бы здорово внести изменения в исходный код интерфейса ClIPSWin,
> чтоб он научился печатать наш великий и могучий)я с виндовсом не работаю, и действительно не знаю как там реализовать поддержку русского языка. насколько я слышал там некорректно работает функция isalpha, что бы она кооректно работала надо преобразовыать char в unsigned char. Но это все слухи, вопросами програмирования в виндовс я не занимаюсь )
буквы в кои8р не печатает не сам клипс а терминал в виндовс, возможно он не знает такой кодировки, возможно он должен печатать билеберду(отчасти)чтобы уж совсем ничего не печатал, сомневаюсь, хотя все может быть.
как я помню тамошний терминал работает в cp866. если есть желание поэксперементируйте поменяйте локаль на ru_RU.CP866 или ru_RU.CP1251(они в виндовсе вроде как то по другому называются)суть в том что бы поставить досовскую или виндосовскую кодировку, в зависимости от того в какой терминал вы хотите выводить результаты работы программ, и в какой кодировке вы собираетесь писать программу,
собственно я не знаю какие в виндовсе имеются локали и как их там вообще посмотреть )
только соотвественно не забудьте менять кодировку текста в самой программе.
Я аналогичным образом модифицировал clipswin, теперь он поддерживает кириллицу в формулировках фактов и правил. Но вообще, более перспективно использовать CLIPS+JNI, там кроме графического интерфейса появляется возможность создания мультиязычных и мультиплатформенных экспертных систем. Кому интересно, пишите.
> Я аналогичным образом модифицировал clipswin, теперь он поддерживает кириллицу в формулировках
> фактов и правил. Но вообще, более перспективно использовать CLIPS+JNI, там кроме
> графического интерфейса появляется возможность создания мультиязычных и мультиплатформенных
> экспертных систем. Кому интересно, пишите.Алексей, если Вам не трудно, выложите точно как вы делаете это в винде, некотрым людям это надо.(фанатам винды). На счет мультиязычных версий не знаю ))). На самом деле русский язык нужен в экспертной системе для эксперта, чтобы удобно на его естественном языке была возможность писать правила, а как правило это всегда моно язычный проект. да что там говорить, есть рекомендация создавать экспертную систему пользуясь знаниями одного эксперта, иначе задача согласования знаний нескольких экспертов просто не решается. вот. а дальше язык интерфейса с пользователем уже можно создавать любой, используя обычные трансляции. Так что на мой взгляд это не очень акуально, хотя почему бы и нет.
подскажите все же как сделать руссификацию в виндовс?
Мне тоже очень нужно разобраться с русификацией в виндоус, может кто-нибудь подскажет ?
Тема Актуальна) Был бы очень призналетелн, если бы добрый человек выложил пошаговую инструкцию со скриншотами для сбилдера под виндой.Заранее спасибо!
Русификацию выполнял на MS VS20081. Файл WinMain.c
добавляем строки:
Хидер #include "locale.h"Перед вызовом InitializeEnvironment вставляем строку
setlocale(LC_ALL,"RUS");
2. Файл Display.c
Заменяем все имена шрифтов "Courier New" на "Courier New Cyr"Здесь же заменяем строки:
char *buffer unsigned на char *buffer
char text[2] на unsigned char text[2]
text[0] = (char) wParam; на text[0] = (unsigned char) wParam;3. Файл CORE\commline.c - заменяем все переменные типа char на unsigned char
Файл WinMain.c
добавляем строки:
Хидер #include "locale.h"Перед вызовом InitializeEnvironment вставляем строку
setlocale(LC_ALL,"RUS");
ЭТОГО ДОСТАТОЧНО)
Вот ссылка https://vk.com/doc96209586_312091944
Недостаточно. Без изменения кода нельзя вводить русские символы в правила - там сломается на вызове макросов из ctype.h
Скажите, а почему при русификации CLIPS 6.3 для Windows(проект CLIPSIDE) ругается на мягкий знак?(bind ?результат (гипотенуза 3.0 4.0))
VVVVV
...резул <<<unprintable char...
Можно это как-то исправить?
https://github.com/novikovag/CLIPSEditor
FeaturesSmart bookmarks
Code folding
Syntax highlighting
Brace matching
Auto completion
UTF-8
Multi language GUI (есть русский язык)
Integrated help for CLIPS
Cross-platform
Для Windows пока что нашел только старую версию. Написал автору.
Прошу подсказать, если на самом деле проблемы нет или подключиться знающим людям к [URL="https://sourceforge.net/p/clipsrules/discussion/776945/threa...дискуссии с автором языка[/URL].
Ссылка что то не работает
https://sourceforge.net/p/clipsrules/discussion/776945/threa.../
Автор собрал CLIPSEditor для Windows. Дистрибутив во вложении на форуме.
http://www.cyberforum.ru/showthread.php?p=14082685
Также у автора есть опыт запуска на Ubuntu.