首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PyCLIPS进行交互式会话?

如何使用PyCLIPS进行交互式会话?
EN

Stack Overflow用户
提问于 2018-12-12 23:20:51
回答 2查看 150关注 0票数 0

我的剪辑文件包含(printout t"text")bind ?var (read)语句。如果我从下面的C代码运行.clp文件,程序将打印到控制台,并按预期从控制台读取我的输入,从而使其成为程序和用户之间的交互会话。

代码语言:javascript
复制
#include "clipscpp.h"
#include <iostream>
#include<stdlib.h>
using namespace std;
int main()
  {
   CLIPS::CLIPSCPPEnv theEnv;

   theEnv.Load("KB.clp");
   theEnv.Reset();
   theEnv.Run(-1);
   return 0;
  }

但是,如果我尝试使用PyCLIPS在python中加载.clp,(printout)(read)都不起作用,并且程序终止而不执行任何操作。

代码语言:javascript
复制
import clips
clips.Load("KB.clp")
clips.Clear()
clips.Reset()
clips.Run(-1)

我如何才能达到与从C运行相同的结果?

EN

回答 2

Stack Overflow用户

发布于 2018-12-13 15:10:01

Python常见问题解答(http://pyclips.sourceforge.net/web/?q=view/faq)建议您使用PyCLIPS函数来处理I/O。

票数 0
EN

Stack Overflow用户

发布于 2018-12-13 16:45:42

我建议这样做:

代码语言:javascript
复制
def parse_trace_stream(trace_stream):
    ...
    """Print trace_stream"""
def parse_stdout_stream(stdout_stream):
    ...
    """Print stdout_stream"""
def parse_error_stream(error_stream):
    ...
    """Print error_stream"""

def evaluate(str):
    if str.count("(") == str.count(")"):
        try:
            clips.Eval(str)
        except:
            parse_error_stream(clips.ErrorStream.Read())

        parse_stdout_stream(clips.StdoutStream.Read())
        parse_trace_stream(clips.TraceStream.Read())

在此之后,您可以编写更多类似剪辑的代码:

代码语言:javascript
复制
evaluate("(load KB.clp)")
evaluate("(clear)")
evaluate("(reset)")
evaluate("(run -1)")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53746158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档