CINXE.COM
SICStus Prolog Homepage
<!DOCTYPE HTML> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <meta NAME="keywords" CONTENT="prolog,free prolog,logic programming,sicstus,compiler,constraint,finite domain,iso,optimization,scheduling,planning,resource allocation,WAM,artificial intelligence,expert system,.NET,ODBC,Tcl/Tk,Java,BDB"> <meta NAME="description" CONTENT="SICStus Prolog is a state-of-the-art, ISO standard compliant, Prolog development system"> <title>SICStus Prolog Homepage</title> <LINK href="../style.css" rel="stylesheet" type="text/css"> <LINK REL="SHORTCUT ICON" HREF="../images/favicon.ico"> </head> <body> <div class="header"> <table class="table_860"> <tr> <td> <img alt="SICStus Prolog Homepage" SRC="../images/logo_v4.jpg"> </td> <td class="align_right"> <span class="header1"> WELCOME TO<br> </span> <span class="header2"> SICStus Prolog<br> </span> <span class="header3"> Leading Prolog Technology </span> </td> </tr> <tr class="headersep"><td colspan="2"></td></tr> <tr class="headerfoot"> <td class="align_left"> <a href="../index.html">SICStus Home</a> > The Spider IDE </td> <td class="align_right"> <a href="../eval.html">Download for Evaluation</a> </td> </tr> <tr class="headersep"><td colspan="2"></td></tr> </table> </div> <div class="menu"> <ul class="menu"> <li class="menuhead1"> About SICStus Prolog</li> <li><a href="../index.html">Start Page</a></li> <li><a href="../highlights.html">Feature Highlights</a></li> <li><a href="../performance.html">Performance</a></li> <li><a href="../portability.html">Platforms</a></li> <li><a href="../spider/index.html">The Spider IDE</a></li> <li><a href="../documentation.html">Documentation</a></li> <li><a href="../comingfeatures.html">Coming Features</a></li> <li><a href="../dontpanic.html">Don't Panic!</a></li> <li class="menuhead"> Sales and Support</li> <li><a href="../customers.html">Customers</a></li> <li><a href="../eval.html">Evaluate Product</a></li> <li><a href="../order4.html">Pricing/Order Info</a></li> <li><a href="../download4.html">Download SICStus</a></li> <li><a href="../support.html">Support</a></li> <li class="menuhead"> Add-Ons & Third Party</li> <li><a href="../rex.html">Extended Runtime</a></li> <li><a href="../thirdparty.html">Other</a></li> <li class="menuhead"> More Information</li> <li><a href="../contactinfo.html">Contact Information</a></li> <li><a href="../community.html">Community</a></li> <li><a href="../links.html">Links</a></li> </ul> </div> <table class="table_690"><tr><td> <script data-jsd-embedded data-key="6397f52a-778e-42bb-97de-92bb4cebf178" data-base-url="https://embedded-jsd.atlassian.io" src="https://embedded-jsd.atlassian.io/assets/embed.js"></script> <h1>SICStus Prolog IDE (SPIDER)</h1> <pre> \|// :- /|\\ </pre> <p> SPIDER is the <a href="../index.html">SICStus Prolog</a> IDE, based on <a href="https://www.eclipse.org/">Eclipse</a>. The <a href="releases.html#current">latest update</a>, 0.0.79, was released November 7, 2023. </p> <ul class="spider_list"> <li> <p> How to <a href="prerequisites.html">Install SPIDER</a>. </p> </li> <li> <p> <a href="getting_started.html">SPIDER Getting Started</a> describes how to create a simple Prolog project as well as how to use some of the SPIDER features. </p> </li> <li> <p> <a href="tips.html">Tips and Tricks</a> contains information about how to best use SPIDER. </p> </li> <li> <p> <a href="releases.html">Release History</a> contains information about releases. </p> </li> </ul> <figure class="spider_figure"> <a target="_blank" href="images/spider_screenshot1.png"><img style="width: 100%;" src="images/spider_screenshot1.png" alt="Some Features of SPIDER"></a> <figcaption class="spider_figcaption"> Some Features of SPIDER </figcaption> </figure> <h2 id="features">Features</h2> <p> Some of the features are described below. See <a href="tips.html">Tips and Tricks</a> for more details. </p> <dl class="spider_dl_list"> <dt>Semantic Highlighting</dt> <dd> <p> Code is highlighted based on semantic properties such as singleton variables, defining occurrence, … </p> </dd> <dt>On the fly warnings</dt> <dd> <p> The editor flags things like calls to undefined predicates, unreachable predicates, incorrect use of predicates and directives, missing declarations, …. Some warnings come with <i>quick-fixes</i>, i.e. automatic source-code modifications that fix the warned-about issue. </p> <p> Problem markers are also enabled for Prolog code that is not open in an editor. </p> </dd> <dt>Pop-up documentation</dt> <dd> <p> Predicate documentation is parsed on the fly and shown when the mouse is hovering over a call. This works for both built-in and user-defined predicates. </p> <p> Related information, like <code>mode/1</code> and <code>block/1</code> directives and various inferred information (determinacy, output arguments) are also shown. </p> </dd> <dt>Open Definition</dt> <dd> <p> Click on a called predicate to bring up its source code. </p> <p> It is also possible to manually enter the name of any predicate, with completion, and go to its source code. </p> </dd> <dt>Call Hierarchy</dt> <dd> <p> Clicking on a predicate can bring up a tree of its callers and other references. </p> <figure class="spider_figure"> <a target="_blank" href="images/call_hierarchy.png"><img style="width: 100%;" src="images/call_hierarchy.png" alt="Call Hierarchy"></a> </figure> <p> A light-weight version of this command, that just opens the closest caller of the current predicate, is also available. </p> </dd> <dt>Determinacy Analyzer</dt> <dd> <p> Predicates are analyzed, on the fly, for potential non-determinacy or non-termination. </p> </dd> <dt>Mode Analyzer</dt> <dd> <p> Predicates are analyzed, on the fly, and likely output arguments are shown when the mouse is hovering over the predicate in a goal. </p> </dd> <dt>Document outline</dt> <dd> <p> The predicates in a file are shown in an outline. They can be alphabetically sorted and non-exported predicates can be hidden from the outline. </p> </dd> <dt>Rename predicates and variables</dt> <dd> <p> Predicates can be accurately renamed in an entire project. Variables can be renamed within a clause or directive. </p> </dd> <dt>Change predicate signature</dt> <dd> <p> The number and order of arguments of a predicate can be changed, and all referencing code will be updated in an entire project. When adding new arguments, SPIDER warns that they must be assigned appropriate values. </p> <figure class="spider_figure"> <a target="_blank" href="images/change_signature.png"><img style="width: 100%;" src="images/change_signature.png" alt="Change Signature"></a> </figure> <figure class="spider_figure"> <a target="_blank" href="images/change_signature_dialog.png"><img style="width: 100%;" src="images/change_signature_dialog.png" alt="Change Signature Dialog"></a> <figcaption class="spider_figcaption"> Arguments can be added, removed, and rearranged </figcaption> </figure> <figure class="spider_figure"> <a target="_blank" href="images/change_signature_result.png"><img style="width: 100%;" src="images/change_signature_result.png" alt="Change Signature Result"></a> <figcaption class="spider_figcaption"> Existing argument position has been moved, added argument variables elicit warnings </figcaption> </figure> </dd> <dt>Extract or inline predicate</dt> <dd> <p> Predicates can be created from selected code, and the code is replaced with a call to the new predicate (“Extract Predicate”). A call to a predicate can be <i>inlined</i>, i.e. replaced with the corresponding clause body. </p> </dd> <dt>Extract or inline variables</dt> <dd> <p> Variables can be introduced from a selected term; variables can be <i>inlined</i>, i.e. replaced with their value. </p> </dd> <dt>Variable Bindings in Debugger</dt> <dd> <p> The debugger shows the names and values of variables. </p> </dd> <dt>Debugger Backtrace</dt> <dd> <p> Backtrace is shown and there are buttons for common debugger actions (Step Over, Step Out, Redo, …). </p> </dd> <dt>Source Code Debugging</dt> <dd> <p> Source-linked debugging. This also works for code, like the SICStus library, that has no recorded source info. </p> </dd> <dt>Breakpoints and Spypoints</dt> <dd> <p> Line Breakpoints and Spypoints can be added by clicking in the left margin of the editor window. </p> </dd> <dt>Prolog top level</dt> <dd> <p> The ordinary top level is still available, with input history and completion. This includes the traditional debugger interface. </p> <p> You can have multiple SICStus processes running, each in its own top level view. </p> </dd> <dt>Profiling</dt> <dd> <p> The <a href="profile.html">Profile view</a> shows profile information for code run with profiling enabled. </p> </dd> <dt>Coverage</dt> <dd> <p> The <a href="profile.html">Coverage view</a> view and editor margin annotation shows source code coverage information for code run with profiling enabled. This feature requires SICStus 4.2 or later. </p> </dd> <dt>Documentation</dt> <dd> <p> Integrated SICStus Manual and other documentation. </p> </dd> <dt>Works with existing code</dt> <dd> <p> No need to reorganize your code, SPIDER can <a href="getting_started.html#existingCode">work with your existing folder structure</a>. </p> </dd> <dt>Powered by Eclipse</dt> <dd> <p> Eclipse provides many features for free, like support for other programming languages, revision control, and much more. </p> </dd> </dl> </td></tr></table> <div class="footer"> <table style="width: 600px; border-collapse: collapse; border: 0;"> <tr> <td colspan="3"> <br><br><br><br> <hr> </td> </tr> <tr> <td class="align_left"> Copyright © 2001-2024 <a href="https://www.ri.se/">RISE Research Institutes of Sweden AB,<br>Swedish org no: 556464-6874</a>, All Rights Reserved.<br>DUNS: 357295187<br> </td> <td class="align_center"> </td> <td class="align_right"> For more information on SICStus Prolog,<br> please email <a href="mailto:sicstus-request@ri.se">SICStus Request</a>. </td> </tr> </table> </div> </body> </html>