簡體   English   中英

Linux g ++在C ++中嵌入Prolog邏輯引擎

[英]Linux g++ Embedding Prolog Logic Engine Within C++

我在C ++程序中有一些邏輯,它不僅非常復雜,而且需要Prolog理想的多種解決方案。 它有點像防火牆配置腳本,檢查操作的輸入,但有時需要更多的操作。

我想要的是這樣的:

class PrologEngine
{
    LoadLogic(const char* filename) throw PrologException; // Load a file of prolog rules, predicates facts etc in textual format. Must be callable multiple times to load AND COMPILE (for speed) prolog rule files.

    std::vector<std::string> Evaluate(const char* predicate_in_string_form = "execute(input, Result)") throw PrologException; Returns a vector of matching predicates in text form.

};

它無需回調C ++。

AMI Prolog似乎得到了它,但它在Linux上不可用。 我正在嘗試使用SWI-Prolog,只能找到2個例子和令人難以置信的拜占庭API(我的觀點)

有人能指出一個接近我正在尋找的例子嗎?

SWI-Prolog一個C ++接口 ,這是高級別的。

我正在與它斗爭 ,這里是一個橋接到OpenGL的例子:

PREDICATE(glEvalCoord1d, 1) {
 double u = A1;
 glEvalCoord1d( u );
 return TRUE;
}

這個干凈的代碼隱藏了許多'bizantinism',使用隱式類型轉換和一些宏。 界面很好並且是雙向的:從C ++調用Prolog有PlCall('運行'一個查詢,類似於你在答案中公開的Evaluate)或一個更結構化的PlQuery,用於多個結果......

如果您不需要鏈接到openGl,或者可以等到我希望從SWI-Prolog郵件列表中獲得的答案,您應該對其進行評估。

如果您不介意重寫prolog代碼以便在本機c ++頭文件庫中使用,我會查看腳本庫: http//www.mpprogramming.com/cpp/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM