Просмотр исходного кода Пролога из файла решения VS2008
-
18-09-2019 - |
Вопрос
У меня есть файл Пролога (Hanoi.pl), содержащий код для решения головоломки Ханойские башни:
hanoi( N ):-
move( N, left, middle, right ).
move( 0, _, _, _ ):-
!.
move( N, A, B, C ):-
M is N-1,
move( M, A, C, B ),
inform( A, B ),
move( M, C, B, A ).
inform( X, Y ):-
write( 'move a disk from ' ),
write( X ),
write( ' to ' ),
writeln( Y ).
У меня также есть файл C++, написанный в VS2008 IDE:
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
#include "SWI-cpp.h"
#include "SWI-Prolog.h"
predicate_t phanoi;
term_t t0;
int main(int argc, char** argv)
{
long n = 5;
int rval;
if ( !PL_initialise(1, argv) )
PL_halt(1);
PL_put_integer( t0, n );
phanoi = PL_predicate( "hanoi", 1, NULL );
rval = PL_call_predicate( NULL, PL_Q_NORMAL, phanoi, t0 );
system( "PAUSE" );
}
Как я могу просмотреть исходный код Пролога (Hanoi.pl) из моего кода C++?Не из командной строки, а из кода, что-то вроде включения, консультации или компиляции?Он находится в той же папке, что и мой файл cpp.
Спасибо,
Решение
Исходный код моего Пролога (hanoi.pl)
hanoi( N ):-
move( N, left, middle, right ).
move( 0, _, _, _ ):-
!.
move( N, A, B, C ):-
M is N-1,
move( M, A, C, B ),
inform( A, B ),
move( M, C, B, A ).
inform( X, Y ):-
write( 'move a disk from ' ),
write( X ),
write( ' to ' ),
writeln( Y ).
Мой код на C++ (написан в VS2008 IDE)
#include <iostream>
#include <fstream>
#include <string>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdafx.h>
using namespace std;
#include "Windows.h"
#include "ctype.h"
#include "SWI-cpp.h"
#include "SWI-Prolog.h"
#include "SWI-Stream.h"
term_t t;
predicate_t p;
int main( int argc, char** argv )
{
argc = 4;
argv[0] = "libpl.dll";
argv[1] = "-G32m";
argv[2] = "-L32m";
argv[3] = "-T32m";
PL_initialise(argc, argv);
if ( !PL_initialise(argc, argv) )
PL_halt(1);
PlCall( "consult(swi('plwin.rc'))" );
PlCall( "consult('hanoi.pl')" );
int rval;
long n = 3;
PL_put_integer( t, n );
p = PL_predicate( "hanoi", 1, NULL );
rval = PL_call_predicate( NULL, PL_Q_NORMAL, p, t );
PL_halt( PL_toplevel() ? 0 : 1 );
}
Просто нажмите F5 в VS2008, чтобы собрать, скомпилировать и запустить!
Не связан с StackOverflow