Основы построения и функционирования интеллектуальных информационных систем. Былкин В.Д - 98 стр.

UptoLike

98
fin d_obj ect: =NIL;
WHILE ((curr_object<>NIL)AND(last_try=NIL)) DO
BEGIN
I F( сurr_obj ect^. name=f-ob ject) THEN ВЕGIN
find_object: =curr_object;
1ast_try:=curr_ob ject
END;
curr_object: =curr-objec^*.next
END
END
END;
Расщепление пары "объект значение"
Когда выражение факта вводится в виде пары "объект-значение", система должна отличить
имя объекта от имени значения. Следующий модуль, SPLIT, воздействует на выражение вида
ОБЪЕКТ=ЗНАЧЕНИЕ, извлекая имена объекта и значения и выводя их в отдельные строки.
Процедура ищет во вводимой строке позицию символа "=". Затем имя объекта помещается в
f_object, а имя значения в f_value.
PROCEDURE split (f_line:line_string;
VAR f_obj ect, f_val ue: word_string );
VAR
st_I eft, st_right: integer;
BEGIN
st_right:=pos(PERIOD,f_line);
IF(st_right=length(f_line) )THEN f Jine:=copy(f _line, 1,st_right-1);
St_left:=pos(EQUALS,f_line);
st_right:=pos( COMMA, f_line);
IF ((st_left=0) AND (st_right=0)) THEN f_object:=f_line;
IF (st_right=0) THEN st_right:length(f_line) + 1;
IF(st_left>0)THEN BEGIN
f_object:=copy (f_line, 1, st_left-1);
IF (pos(')‘f_object)=0) THEN
f_val ue := copy (f_I ine, st_left+ 1, st_r ight-st_lef t-1);
END;
st_right:=pos(')',f_object);
IF (st_right>0) THEN f_object:=copy (f_line,l,st_right1);
END;
       fin d_obj ect: =NIL;
       WHILE ((curr_object<>NIL)AND(last_try=NIL)) DO
               BEGIN
               I F( сurr_obj ect^. name=f-ob ject) THEN ВЕGIN
               find_object: =curr_object;
             1ast_try:=curr_ob ject
       END;
        curr_object: =curr-objec^*.next
 END
END
END;
                                    Расщепление пары "объект — значение"
        Когда выражение факта вводится в виде пары "объект-значение", система должна отличить
имя объекта от имени значения. Следующий модуль, SPLIT, воздействует на выражение вида
ОБЪЕКТ=ЗНАЧЕНИЕ, извлекая имена объекта и значения и выводя их в отдельные строки.
        Процедура ищет во вводимой строке позицию символа "=". Затем имя объекта помещается в
f_object, а     имя значения в f_value.
PROCEDURE split (f_line:line_string;
VAR f_obj ect, f_val ue: word_string );
VAR
st_I eft, st_right: integer;
BEGIN
st_right:=pos(PERIOD,f_line);
IF(st_right=length(f_line) )THEN f Jine:=copy(f _line, 1,st_right-1);
St_left:=pos(EQUALS,f_line);
st_right:=pos( COMMA, f_line);
IF ((st_left=0) AND (st_right=0)) THEN f_object:=f_line;
IF (st_right=0) THEN st_right:length(f_line) + 1;
IF(st_left>0)THEN BEGIN
       f_object:=copy (f_line, 1, st_left-1);
       IF (pos(')‘f_object)=0) THEN
              f_val ue := copy (f_I ine, st_left+ 1, st_r ight-st_lef t-1);
     END;
      st_right:=pos(')',f_object);
     IF (st_right>0) THEN f_object:=copy (f_line,l,st_right1);
       END;




                                                             98