Системное программирование в UNIX средствами Free Pascal


         

Ошибка открытия для чтения


    ENTER=4;

%}

%%

'[^']*'          begin yyretval:=STROKA; yydone:=true; end;

\"[^"]*\"   begin yyretval:=STROKA; yydone:=true; end;

"end."           begin yyretval:=STROKA; yydone:=true; end;

\n         begin yyretval:=ENTER;  yydone:=true; end;

.          begin yyretval:=ANY;    yydone:=true; end;

"{"[^"}"]*"}" begin yyretval:=COMMENT;yydone:=true; end;

"/*""/"*([^*/]|[^*]"/"|"*"[^/])*"*"*"*/" begin

  yyretval:=COMMENT;yydone:=true;

end;

"(*""("*([^*)]|[^*]")"|"*"[^)])*"*"*"*)" begin

  yyretval:=COMMENT;yydone:=true;

end;

"//"[^\n]*\n     begin yyretval:=COMMENT;yydone:=true; end;

%%

(*

function yywrap:boolean;

begin

  writeln('end?');

  yywrap:=true;

end;

*)

var

  token:integer;

  fresult,fcomment:text;

begin

  if paramcount<>3 then

  begin

    writeln('Используйте: ', paramstr(0), ' исходный_файл результирующий_файл извлеченные_комментарии');

    exit;

  end;

  assign(yyinput,paramstr(1));

  {$I-}

  reset(yyinput);

  if ioresult<>0 then

  begin

    writeln(' Ошибка открытия для чтения ', paramstr(1));

    exit;

  end;

 

  assign(fresult,paramstr(2));

  rewrite(fresult);

  if ioresult<>0 then

  begin

    writeln('Ошибка создания ', paramstr(2));

    exit;

  end;

 

  assign(fcomment,paramstr(3));

  rewrite(fcomment);

  if ioresult<>0 then

  begin

    writeln('Ошибка создания ', paramstr(3));

    exit;

  end;

 

  token:=yylex;

  while not eof(yyinput) do

  begin

    if token=COMMENT then

      writeln(fcomment,yytext)

    else

      write(fresult,yytext);

    token:=yylex;

  end;

  write(fresult,yytext);

  close(yyinput);

  close(fcomment);

  close(fresult);

end.


Содержание  Назад  Вперед