{"id":13710156,"url":"https://github.com/AmziLS/AmziProlog","last_synced_at":"2025-05-06T18:34:23.327Z","repository":{"id":63339645,"uuid":"56350066","full_name":"AmziLS/AmziProlog","owner":"AmziLS","description":"Amzi! Prolog: complete system to interpret, build, run and debug Prolog programs, but also embed and query them similar to databases.","archived":false,"fork":false,"pushed_at":"2021-11-19T02:15:43.000Z","size":17590,"stargazers_count":117,"open_issues_count":14,"forks_count":26,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-11-13T20:40:33.426Z","etag":null,"topics":["eclipse-plugin","ide","logic-programming","prolog","virtual-machine"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AmziLS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-15T21:12:20.000Z","updated_at":"2024-11-08T08:14:19.000Z","dependencies_parsed_at":"2022-11-17T08:00:55.722Z","dependency_job_id":null,"html_url":"https://github.com/AmziLS/AmziProlog","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmziLS%2FAmziProlog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmziLS%2FAmziProlog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmziLS%2FAmziProlog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmziLS%2FAmziProlog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AmziLS","download_url":"https://codeload.github.com/AmziLS/AmziProlog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252744929,"owners_count":21797705,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eclipse-plugin","ide","logic-programming","prolog","virtual-machine"],"created_at":"2024-08-02T23:00:52.479Z","updated_at":"2025-05-06T18:34:18.312Z","avatar_url":"https://github.com/AmziLS.png","language":"C++","readme":"# Amzi! Prolog\n\nSource code for the entire Amzi! Prolog system.\n\nAmzi! Prolog is made of the following:\n  - **Prolog Virtual Machine** -- Warren Abstrace Machine (WAM)\n  - **Logic Server** -- a runtime library wrapping around the Prolog-VM, for executing, modifying, and interacting with compiled Prolog programs\n  - **C API and foreign language bindings** -- the [Logic Server API (LSAPI)](https://www.amzi.com/manuals/amzi/ls/lsapirf.htm) to embed Logic Server into C and other languages, to allow:\n    - asserting or retracting clauses (facts or rules) and querying logic bases\n    - calling Prolog predicates\n    - type specific operations on data (for lists and structures)\n    - converting data between the host language and Prolog\n    - adding extended predicates, and manipulating their parameters\n    - error handling\n  - **Logic Server Extensions** -- .lsx files that provide extended predicates/functions, implemented in other languages\n  - **Command line tools** -- to interpret and debug (`alis`), compile (`acmp`), link (`alnk`) and execute (`arun`) Prolog programs\n    - The Prolog listener alis is an interactive interpreter; the process is aka. [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop).\n  - **Eclipse IDE plugin** -- for comfortable compiling, linking, and *debugging*\n\nFile types:\n  - **.pro** -- Prolog source code (program or module)\n  - **.plm** -- Compiled Prolog module (Prolog/WAM byte code file -- machine independent)\n  - **.xpl** -- Executable Prolog library (a linked collection of .plm files)\n  - **.lsx** -- Logic Server extension (a renamed DLL/SO file)\n\nCommon terms:\n  - Logic base = knowledge base = Prolog program\n  - The Logic Server is a service, with an interface similar to a database server, which allows to query and update the logic base (= Prolog program).\n  - Loading of a source code file (.pro), then interpreting it, is called \"consulting\". This is in contrast to compiled files (.plm/.xpl), which are simply said to be \"loaded\".\n    - **Note:** neither loading compiled code, nor consulting source code, will automatically execute the [main/0 predicate](https://www.amzi.com/manuals/amzi/ls/lsprguid.htm#MainEntryPoints) -- use `arun` if you want that.\n\nSee also: [Amzi! Prolog Quick Overview](http://www.amzi.com/manuals/amzi/pro/pug_overview.htm) and the [Detailed Amzi! Prolog Overview](https://www.amzi.com/AmziPrologLogicServer/white_papers/amzi_overview.php)\n\n## Documentation\n[User's Guide and Reference](https://www.amzi.com/manuals/amzi/pro/top.htm)    \n[Programmer's Guide](https://www.amzi.com/manuals/amzi/ls/lsprguid.htm)    \n[Logic Server User's Guide and Reference](https://www.amzi.com/manuals/amzi/ls/lstop.htm)   \n    \n[Prolog Articles / Whitepapers](https://www.amzi.com/manuals/amzi/articles/doc.html)    \n[Adventure in Prolog](https://www.amzi.com/manuals/amzi/aip/advfrtop.htm) -- A tutorial/guided tour through Prolog    \n[Building Expert Systems in Prolog](https://www.amzi.com/manuals/amzi/xsip/xsipfrtop.htm) --  An advanced tutorial    \n\n### Eclipse\nVideos:\n  * [Getting Started with Eclipse Amzi! Prolog](https://www.youtube.com/watch?v=EMxLnn2I9yo)    \n  * [Amzi! Prolog Source Code Debugger in Eclipse](https://www.youtube.com/watch?v=fewTmnarfu8)    \n\nArticles:\n  * [Eclipse IDE Quick Start](http://www.amzi.com/manuals/amzi/pro/pug_ide_quickstart.htm)\n  * [Eclipse IDE](http://www.amzi.com/manuals/amzi/pro/pug_ide.htm)\n\n## Repository Contents\n\nThe `/engine` folder contains Amzi! Prolog's core, made of the Prolog-VM and the Logic Server runtime library.\nThe Logic Server's primary API is exposed in C and found under `/engine`, but has also various foreign language bindings found under `/langbindings`.\n\nThe Prolog compiler, listener, and runner are found under `/run`. `acmp`, `arun`, and `alis` are the exact same executable, their actual purpose is identified by their filename only:\n- for `arun`, the engine/Logic Server simply executes the passed `.xpl` file\n- for `alis` it loads `alis.xpl` (source under `/listen`)\n- for `acmp` it loads `acmp.xpl` (found under `/compile` and the source under https://github.com/AmziLS/AmziPrologCompiler)\n\n`/linkrun` contains the source for the Prolog linker. `/libs` contains [Prolog libraries](https://www.amzi.com/manuals/amzi/libs/doc.html) that will be compiled to .plm files.\n\nA core extension to Prolog -- which provides OS related functions for handling files, directories, environment variables, and displaying message boxes -- is available under `/extensions/osutils`. Non-core extensions exist for ODBC, MySQL, Tcl/Tk, and sockets, which can be found in the `/extensions` folder.\n\nExamples for all core Prolog uses, language bindings, and Prolog extensions are available under `/samples`.\n\nFinally, apart from a simple Windows IDE (under `/winIDE`), there is also an Eclipse plugin that provides a more complete experience, found under `/eclipse_plugin`.\n\n## Building and Debugging\n\nFor building the whole system, see the `/make` subdirectory.\n  * There are [detailed building instructions for Windows](Building%20instructions%20for%20Windows.md).    \n  * Individual components can be built using the make files in each subdirectory.\n\nIt is also possible to load the .sln files in Visual Studio for debugging.    \n  1. Make sure to adapt `bin/amzi_vars_win32.bat` and `bin/amzi_vars_win64.bat` to match\nthe installation paths of the installed dependencies (as mentioned in the building instructions).\n  2. Start Visual Studio from either `Amzi Prolog 32 Bit Environment (Source).lnk` or `Amzi Prolog 64 Bit Environment (Source).lnk` command line environments, to ensure all the necessary paths are set.    \n      * Enter `devenv` to start Visual Studio.\n\n## Releases\n\n[Releases](https://github.com/AmziLS/AmziProlog/releases) are available as usual on GitHub, on the right side bar. They contain the built runtime library, and command line tools, but also samples, language bindings, Logic Server extensions, and a ready to use Eclipse plugin. It's the easiest way to [get started](Setup%20and%20getting%20started.md).\n    \n## License\n\nCopyright (c) Amzi! inc. 2016, 2021    \nLicensed under the MIT Open Source License.\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAmziLS%2FAmziProlog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAmziLS%2FAmziProlog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAmziLS%2FAmziProlog/lists"}