The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Русификация языка построения экспертных систем CLIPS
Прочитал в википедии, что распространению 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)
 
16.08.2010 , Автор: NuINu
Ключи: CLIPS, rus, language / Лицензия: CC-BY
Раздел:    Корень / Пользователю / Русификация

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (1), 18:35, 16/08/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отлично. Вот только пользуется кто-нибудь этим клипсом ещё?
     
  • 1.2, chocholl (??), 19:16, 16/08/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    из практического интереса спрашиваю, не холивара ради...
    а что посоветуете?
     
  • 1.3, Sw00p aka Jerom (?), 08:54, 17/08/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ХОП-шники конечно же пользоваться не будут
     
     
  • 2.6, fr0ster (ok), 08:55, 23/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Стесняюсь спросить, ХОП-шники это что такое?
     

  • 1.4, Аноним (-), 17:52, 17/08/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    21 век, ГДЕ ЮНИКОД???
     
  • 1.5, NuINu (??), 22:34, 17/08/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    так клипсом и не пользуются в россии, потому что про руссификацию нет информации. взять ту же книгу Частикова Разработка экспертных систем. среда CLIPS там тоже прямо говориться что русского языка там нет и не будет.(хотя сама эта книжка на половину это всего лишь перевод документации клипса распространяемой бесплатно )) )

    за юникод не возьмусь, попробоовать поддержать можно таким же способом (замените ru_RU.KOI8-R на ru_RU.utf8). но многобайтовый символы, могут вызвать проблему в парсере clipsа. надо тестировать. попробуйте если вы фанат юникода. я и в 21 веке пользуюсь кои8р и никак не страдаю. в данном контексте юникод может пригодиться для разработки ммм... полинациональных правил... хотя данный вопрос обычно решается по другому.

     
  • 1.7, Педант (?), 23:25, 24/08/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот только полной русификацией это не назовешь.
    (deffunction гипотенуза (?a ?b)
    Получив русскую гипотенузу обычно требуют "а почему deffunction, а не ЗадатьФункцию"? Не можешь? Фи...
     
  • 1.8, Anavrin (?), 03:43, 18/12/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >[оверквотинг удален]
    >        =>
    >        (bind ?результат (гипотенуза 3.0 4.0))
    >        (printout t "гипотенуза = "
    > ?результат crlf)
    >    )
    >    (reset)
    >    (run)
    >    (exit)
    > URL:
    > Обсуждается: http://www.opennet.me/tips/info/2420.shtml

    Добавить библиотеку надо еще #include <locale.h>

     
     
  • 2.9, NuINu (??), 13:42, 19/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >>        (bind ?результат (гипотенуза 3.0 4.0))
    >>        (printout t "гипотенуза = "
    >> ?результат crlf)
    >>    )
    >>    (reset)
    >>    (run)
    >>    (exit)
    >> URL:
    >> Обсуждается: http://www.opennet.me/tips/info/2420.shtml
    > Добавить библиотеку надо еще #include <locale.h>

    странно, у меня этот инклюд делается в setup.h, вероятно разные версии клипса.
    но если у кого не будет компилироваться, то да - надо.

     

  • 1.10, Ledi_J (ok), 12:52, 06/03/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    NuINu, нужна помощь человека разбирающегося в CLIPS.Можно с вами связаться через почту или icq?
     
  • 1.11, Ledi_J (ok), 12:54, 06/03/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    NuINu, нужна помощь человека разбирающегося в CLIPS.Можно с вами связаться через почту или icq? моя почта:julya--shka@yandex.ru
     
  • 1.12, NuINu (??), 20:31, 25/03/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    К сожалению когда руссифицировал клипс, я совсем забыл о сортировке, а вернее о сравнении строк. В указанном выше совете клипс учиться воспринимать русские буквы, но сортировать(сравнивать строки) правильно не может.
    но исправить это можно весьма просто, заменив функцию сравнения строк 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)

     
  • 1.13, Parallax (ok), 22:04, 03/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Здравствуйте!Добавил код
    setlocale(LC_ALL, "ru_RU.KOI8-R");
    setlocale(LC_NUMERIC, "C");
    в файл в main.c, так же добавил строку #include <locale.h>, но после построения всего проекта запускаю исполняемый файл, а русские символы все равно не печатаются. Где я ошибся?может кто нибудь поправит?Я начинающий программист.
     
     
  • 2.14, NuINu (??), 20:44, 04/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Здравствуйте!Добавил код
    > setlocale(LC_ALL, "ru_RU.KOI8-R");
    > setlocale(LC_NUMERIC, "C");
    > в файл в main.c, так же добавил строку #include <locale.h>, но после
    > построения всего проекта запускаю исполняемый файл, а русские символы все равно
    > не печатаются. Где я ошибся?может кто нибудь поправит?Я начинающий программист.

    А какая у вас локаль в терминале? и в какой кодировке вы пишете программу? проверьте все, в моем варианте все должно быть в кои8
    и еще вопрос, пусть русские буквы не печатаются, а программа ругается на плохие символы в программе?

     
     
  • 3.15, Parallax (ok), 11:33, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >> 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, чтоб он научился печатать наш великий и могучий)

     
     
  • 4.16, NuINu (??), 18:16, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >> кои8
    >> и еще вопрос, пусть русские буквы не печатаются, а программа ругается на
    >> плохие символы в программе?
    > Упустил один момент - вы ведь, как я понял, имели ввиду консольную
    > версию, а я ClIPSWin мучаю. Но все же я еще раз
    > перекомпилировал, и теперь интересующий меня исполняемый файл ClIPSWin.exe понимает русские
    > символы локали KOI8-R, но не печатает их. Жаль, приходится редактировать clp
    > файл в текстовом редакторе и только после этого лоадить их в
    > clips Было бы здорово внести изменения в исходный код интерфейса ClIPSWin,
    > чтоб он научился печатать наш великий и могучий)

    я с виндовсом не работаю, и действительно не знаю как там реализовать поддержку русского языка. насколько я слышал там некорректно работает функция isalpha, что бы она кооректно работала надо преобразовыать char в unsigned char. Но это все слухи, вопросами програмирования в виндовс я не занимаюсь )

    буквы в кои8р не печатает не сам клипс а терминал в виндовс, возможно он не знает такой кодировки, возможно он должен печатать билеберду(отчасти)чтобы уж совсем ничего не печатал, сомневаюсь, хотя все может быть.
    как я помню тамошний терминал работает в cp866. если есть желание поэксперементируйте поменяйте локаль на ru_RU.CP866 или ru_RU.CP1251(они в виндовсе вроде как то по другому называются)суть в том что бы поставить досовскую или виндосовскую кодировку, в зависимости от того в какой терминал вы хотите выводить результаты работы программ, и в какой кодировке вы собираетесь писать программу,
    собственно я не знаю какие в виндовсе имеются локали и как их там вообще посмотреть )
    только соотвественно не забудьте менять кодировку текста в самой программе.

     

  • 1.17, Алексей Винокуров (?), 11:18, 16/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я аналогичным образом модифицировал clipswin, теперь он поддерживает кириллицу в формулировках фактов и правил. Но вообще, более перспективно использовать CLIPS+JNI, там кроме графического интерфейса появляется возможность создания мультиязычных и мультиплатформенных экспертных систем. Кому интересно, пишите.
     
     
  • 2.18, NuINu (??), 23:26, 16/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Я аналогичным образом модифицировал clipswin, теперь он поддерживает кириллицу в формулировках
    > фактов и правил. Но вообще, более перспективно использовать CLIPS+JNI, там кроме
    > графического интерфейса появляется возможность создания мультиязычных и мультиплатформенных
    > экспертных систем. Кому интересно, пишите.

    Алексей, если Вам не трудно, выложите точно как вы делаете это в винде, некотрым людям это надо.(фанатам винды). На счет мультиязычных версий не знаю ))). На самом деле русский язык нужен в экспертной системе для эксперта, чтобы удобно на его естественном языке была возможность писать правила, а как правило это всегда моно язычный проект. да что там говорить, есть рекомендация создавать экспертную систему пользуясь знаниями одного эксперта, иначе задача согласования знаний нескольких экспертов просто не решается. вот. а дальше язык интерфейса с пользователем уже можно создавать любой, используя обычные трансляции. Так что на мой взгляд это не очень акуально, хотя почему бы и нет.

     

  • 1.19, qqq (??), 12:10, 13/03/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    подскажите все же как сделать руссификацию в виндовс?
     
     
  • 2.20, Nikphil87 (?), 11:20, 13/07/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Мне тоже очень нужно разобраться с русификацией в виндоус, может кто-нибудь подскажет ?


     

  • 1.21, Rydo (?), 17:02, 05/09/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тема Актуальна) Был бы очень призналетелн, если бы добрый человек выложил пошаговую инструкцию со скриншотами для сбилдера под виндой.

    Заранее спасибо!

     
  • 1.22, renegator (?), 11:21, 30/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Русификацию выполнял на MS VS2008

    1. Файл 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

     
  • 1.24, Юрий безруков (?), 20:20, 26/06/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Файл WinMain.c
    добавляем строки:
    Хидер #include "locale.h"

    Перед вызовом InitializeEnvironment вставляем строку

       setlocale(LC_ALL,"RUS");

    ЭТОГО ДОСТАТОЧНО)
    Вот ссылка https://vk.com/doc96209586_312091944

     
  • 1.25, renegator (?), 13:15, 27/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Недостаточно. Без изменения кода нельзя вводить русские символы в правила - там сломается на вызове макросов из ctype.h
     
  • 1.26, Серж (??), 10:39, 21/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Скажите, а почему при русификации CLIPS 6.3 для Windows(проект CLIPSIDE) ругается на мягкий знак?

    (bind ?результат (гипотенуза 3.0 4.0))

    VVVVV

    ...резул <<<unprintable char...

    Можно это как-то исправить?

     
  • 1.27, Александр (??), 20:45, 07/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://github.com/novikovag/CLIPSEditor
    Features

        Smart bookmarks
        Code folding
        Syntax highlighting
        Brace matching
        Auto completion
        UTF-8
        Multi language GUI (есть русский язык)
        Integrated help for CLIPS
        Cross-platform
    Для Windows пока что нашел только старую версию. Написал автору.

     
  • 1.28, Александр (??), 23:15, 08/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Прошу подсказать, если на самом деле проблемы нет или подключиться знающим людям к [URL="https://sourceforge.net/p/clipsrules/discussion/776945/thread/7a1730753a/";]дискуссии с автором языка[/URL].
     
  • 1.29, Александр (??), 23:18, 08/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ссылка что то не работает
    https://sourceforge.net/p/clipsrules/discussion/776945/thread/7a1730753a/
     
  • 1.30, Александр (??), 08:15, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автор собрал CLIPSEditor для Windows. Дистрибутив во вложении на форуме.
    http://www.cyberforum.ru/showthread.php?p=14082685
    Также у автора есть опыт запуска на Ubuntu.
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру