Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Как вывести русский язык.
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
lifefine lifefine вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.12.2010
Smile Как вывести русский язык. - 24.12.2010, 02:43

Всем привет! Помогите плиз, уже устал думать(((. Мне надо вывести на консоль русскую строку, вот код:
Код:
%                         ЛЕКСИЧЕСКИЙ АНАЛИЗАТОР
% переменные:
% Lw - список слов
% W,W1 - одно слово
% Lc - список символов
% C,C1 - один символ
% Считать предложение
read_sentence( [ W|Lw ] ) :-
    get0( C ),
    read_word( C, W, C1 ),
    rest_sentence( W, C1, Lw ), !.

% предыдущее слово и следующий символ введены
% считать оставщуюся часть предложения
rest_sentence( W, _, [] ) :-

% конец просмотра, если предыдущим словом
% была граница предложения
    limit_sentence( W ), !.

rest_sentence( W, C, [ W1|Lw ] ) :-
    read_word( C, W1, C1 ),
    rest_sentence( W1, C1, Lw ).

% принять начальный символ, прочитать слово и
% возвратить следующий символ
read_word( C, W, C1 ) :-
    separator( C ),
    !,

% построить слово из символов C
    name( W, [ C ] ),
    get0( C1 ).

read_word( C, W, C1 ) :-
    allow_symbol( C ),
    !,
    get0( C2 ),

% считать следующие символы
    rest_word( C2, Lc, C1 ),

% построить слово
    name( W, [ C|Lc ] ).
read_word( C, W, C1 ) :-
% символ C недопустим, ввести новый символ
    get0( C2 ),

% повторить попытку построить слово
    read_word( C2, W, C1 ).
% наращивать слово до ближайшего недопустимого символа

rest_word( C, [ C|Lc ], C1 ) :-     %  объединить символы в список
    allow_symbol( C ),
    !,
   get0( C2 ),
    rest_word( C2, Lc, C1 ).

% конец слова, если C - недопустимый символ
rest_word( C, [], C ).

% разделители, воспринимаемые как самостоятельные слова:
separator( 44 ).     %,
separator( 59 ).     %;
separator( 58 ).     %:
separator( 63 ).     %?
separator( 33 ).     %!
separator( 46 ).     %.
separator( 45 ).     %-
separator( 43 ).     %+
separator( 40 ).     %*
separator( 41 ).     %/

% диапазоны кодов допустимых символов:

allow_symbol( I ) :- I > 96, I < 123.  % a - z
allow_symbol( I ) :- I > 64, I < 91.   % A - Z
allow_symbol( I ) :- I > 47, I < 58.   % 0 - 9
allow_symbol( I ) :- I >=127, I=<160.   %А-Я
allow_symbol( I ) :- I >=160, I=<176. % а-п
allow_symbol( I ) :- I >=223, I=<240.   % р-я 
allow_symbol( I ) :- I = 240.          %Ё
allow_symbol( I ) :- I = 241.          %ё

% разделители, заканчивающие предложение:

limit_sentence( '.' ).
limit_sentence( '!' ).
limit_sentence( '.' ).

% удаление разделителя из списка

del( [], [] ).
del( [ X|Xs ], X1s ) :-
   limit_sentence( X ), del( Xs, X1s ), !.
del( [ X|Xs ], [ X|X1s ] ) :- del( Xs, X1s ), !.

%                    СИСТЕМА ГРАММАТИЧЕСКОГО РАЗБОРА

% имена переменных
% I = входной список лексем
% O,R = выходной список лексем

% нетерминалы
%       Вход  Выход  Название
object( I,    O,     sentence ) :-
   object( I, R, noun_phrase),
   object( R, O, verb_phrase).

object( I, O, sentence ) :-
   object( I, E, noun_phrase),
   object( E, O, end_sentence ).

object( I, O, noun_phrase ) :- object(I, O, noun); 
   (object( I, R, article ), object( R, O, noun )).

object( I, O, verb_phrase ) :-
     object( I, R, verb ),
   ( object( R, E, noun_phrase ), object( E, O, end_sentence ) ) ;
     object( R, O, end_sentence ).

object( [ '.' ], [ ], end_sentence ).

% темимналы
%       Вход           Выход  Название
object( [ the|R ],     R,     article ).
object( [ a|R ],     R,     article ).
object( [ cow|R ],     R,     noun ).
object( [drench|R ],     R,     noun ).
object( [softness|R ],     R,     noun ).
object( [ tail|R ],    R,     noun ).
object( [chatter|R ],    R,     pronoun).
object( [ shakes|R ],  R,     verb ).
object( [ walks|R ],   R,     verb ).
object( [lard|R ],   R,     verb ).
object( [ eats|R ],   R,     verb ).

object( [ при|R ],     R,     article ).
object( [ над|R ],     R,     noun ).
object( [ надо|R ],    R,     noun ).
object( [ ненадо|R ],   R,     verb ).
object( [ ааа|R ],   R,     verb ).%русская "ааа"

object( [ 'the'|R ],     R,     article ).
object( [ 'cow'|R ],     R,     noun ).
object( [ 'tail'|R ],    R,     noun ).
object( [ 'lard'|R ],  R,     verb ).
object( [ 'ааа'|R ],   R,     verb ).%русская "ааа"


% ввод и разбор фразы
phrase( P ) :-
   read_sentence( P ), !, object( P, L, sentence ).
Мне нужно просто вывести русское слово "ааа" на консоль.
P.S.Пишу на Amzi Prolog.
Ответить с цитированием
  (#2 (permalink)) Старый
lifefine lifefine вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.12.2010
По умолчанию 24.12.2010, 11:45

Все, заработало)
Ответить с цитированием
  (#3 (permalink)) Старый
Zolotinka Zolotinka вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.06.2011
По умолчанию 02.06.2011, 03:36

Цитата:
Сообщение от lifefine Посмотреть сообщение
Все, заработало)
Задание у меня такое же, но русские буквы amzi не воспринимает, как допустимые... Что нужно сделать?

запрос
phrase(P).
яблоко висит.

выдает: P=[.] (то есть список пуст, русские буквы недопустимы)
yes

Английский работает нормально.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cmd - русский язык как его установить Вака С/С++ 9 30.06.2011 20:23
Русский язык в Squeak danio Smalltalk 12 30.08.2008 01:01
Русский язык в squeak в Mac OS leto317 Smalltalk 20 24.06.2008 12:12
Help коверкает русский язык Sati Delphi 2 20.05.2006 10:22
EZY Prolog и русский язык Сергей Пеньков Prolog 1 01.05.2006 08:10
Русский язык и exe-шники Amputator Pascal 2 20.02.2006 22:51
Русский язык Dian Мысли вслух 30 01.11.2005 17:24
Русский язык и M$Visual 7.0 Omen Visual C++ 6 28.02.2005 10:15
Русский Язык и Mysql serg3 MySQL 3 21.02.2005 22:43
Русский язык в WAP Формах LanDyx XML & WML 5 25.12.2004 00:45
Русский язык в PostgreSQL wolf PostgreSQL 1 28.05.2004 13:01
Как включить русский язык Anonymous Офтопик 1 30.04.2003 13:07



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов