以下にディレクトリ$PROROOT/demos/cの中にあるreadatom.cのリストを示します。別のリストは、cpred.hの中のマクロ定義がCプリプロセッサによって展開された後のファイルを示しています。...
移動
次へ 前へ
上へ 最上
参考
readatom.cのリスト
プリプロセッサによる展開前と後のreadatom.cのリスト
イフコンピュータ > IF/Prolog > マニュアル > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > IF/PrologからC言語へのインタフェ−ス > バックトラックするProlog述語をC言語で書く > バックトラックをし、Epilogを持つプログラム例 > readatom.cのリスト

readatom.cのリスト

MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

以下にディレクトリ$PROROOT/demos/cの中にあるreadatom.cのリストを示します。別のリストは、cpred.hの中のマクロ定義がCプリプロセッサによって展開された後のファイルを示しています。 (注意:stdio.hは重要でないので、プリプロセッサにかけていません)

/*------------------------------------------------------*/ /* filename : $PROROOT/demos/c/readatom.c */ /* demonstrates use of EPILOG: test with: */ /* go :- readatom(Filename,Atom),write(Atom),nl,!,fail. */ /*------------------------------------------------------*/ #include "cpred.h" #include #define MAXLEN 100

char line[MAXLEN+1]; /* max line length */ FILE *fp, *fopen(); char *name; typedef struct { FILE *fp } READSTATE;  /* STATE */

Cboot() { CPRED("readatom", 2, readatom, sizeof(READSTATE) ); } /*------------------------------------------------------*/ COROUTINE( readatom, READSTATE, state) /* FUNCTION */ RESUME(1, Label1); HASEPILOG; BEGIN if(!XChk(IsString(Arg(1), &name), "atom expected for file name")) { FAIL; } if(!XChk( (((state->fp)=fopen(name, "r")) != (FILE *)NULL), "Could not open file")) { FAIL; }

EnableEpilog(); printf("epilog enabled\n"); while ( readline(state->fp) ) { if( UnifyArg(2, (StrAt(line))) ) DETACH(1, Label1) }

EPILOG: printf("start of epilog\n"); if(state->fp){ fclose(state->fp); printf("file closed by epilog\n"); } END

/*------------------------------------------------------*/ int readline(fp) FILE *fp; { char c; int i = 0;

while ( (c = getc(fp)) != EOF && c != '\n' ) { if ( i < MAXLEN ) line[i++] = c; } line[i] = '\0'; if (c != EOF) return(1); else return(0); }

続く..
IF/Prolog by Siemens
言語
English
Japanese
German
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/c_interface/cpredbw/exampbe/lst/home_jp.html
published 2008/11/17 update 1995/11/6 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS