| Did you know ... | Search Documentation: |
| Packs (add-ons) for SWI-Prolog |
| Title: | Prolog Library Collection |
|---|---|
| Rating: | Not rated. Create the first rating! |
| Latest version: | 1.0.16 |
| SHA1 sum: | cc68bbb8de3bf68caf567d62ad21303dd71758f2 |
| Author: | Wouter Beek <wouter@triply.cc> |
| Maintainer: | Wouter Beek <wouter@triply.cc> |
| Packager: | Wouter Beek <wouter@triply.cc> |
| Home page: | https://github.com/wouterbeek/prolog_library_collection |
| Download URL: | https://github.com/wouterbeek/prolog_library_collection/releases/*.zip |
No reviews. Create the first review!.
A collection of Prolog libraries that have proven useful in various projects. These libraries are intended to extend the functionality that is already available in the SWI-Prolog standard libraries.
Install SWI-Prolog.
Install this library:
swipl -g 'pack_install(prolog_library_collection)' -t halt
Once installed, modules from this library are loaded as follows:
:- [library(atom_ext)].
archive_ext
This module extends the standard library archive:
mtree, which is
a plain text format that is almost never used yet leads to many
false positives in practice.assoc_ext
This module extends the standard library assoc:
option.with(value,key)
pairs.atom_extThis module provides additional support for working with atoms:
call_extmeta-predicates
closurecode_extThis module extends support for working with character-denoting numeric codes:
put_codes(+Codes:list(code))put_codes(+Out:stream, +Codes:list(code))conf_extThis module introduces a generic way for dealing with external configuration files:
cli_arguments(-Args:list(opt)) is det.conf_json(-Conf:dict) is det.countercsv_extStreamed processing of CSV files.
date_timedcgDefinite Clause Grammars
In directory `/dcg` you will find a collection of Definite Clause Grammar (DCG) modules.
dcg/dcg_abnfAdvanced Bauckus-Naur Form (ABNF)
While DCGs are nice, they can be a bit verbose for expressing common repetition patterns. To make DCGs that include repetitions less verbose, this module implements variable repetition as defined in [[https://tools.ietf.org/html/rfc5234][RFC 5234: Augmented BNF for Syntax Specifications: ABNF]].
Suppose we want to parse sentences, which are non-empty sequences of words:
sentence1([H|T]) --> word(H), sentece2(T). sentence2([H|T]) --> word(H), sentence2(T) sentence2([]) --> "".
When this module is loaded, the same can be written as follows:
sentence(L) --> +(word, L).
##### variable repetition
Variable repetition is a metasyntactic construct which states that at least M and at most N occurrences of `:Dcg_0` must be processed:
'm*n'(?M:nonneg, ?N:nonneg, :Dcg_0)//
##### specific repetition
Specific repetition is a metasyntactic construct which states that exactly N occurrences of Dcg_0 must be processed:
'#'(?N:nonneg, :Dcg_0)//
Specific repetition is a special case of [[variable repetition]],
because #(N, Dcg_0) is the same as 'm*n'(N, N, Dcg_0).
##### Kleene
Kleene star is a metasyntactic construct which states that zero or more occurrences of Dcg_0 must be processed:
*(?N:nonneg, :Dcg_0)//
Kleene star is a special case of [[variable repetition]], because
*(N, Dcg_0) is the same as 'm*n'(_, _, Dcg_0).
##### Kleene sum
Kleene sum is a metasyntactic construct which states that one or more occurrences of Dcg_0 must be processed:
+(?N:nonneg, :Dcg_0)//
Kleene sum is a special case of [[variable repetition]], because +(N,
Dcg_0) is the same as 'm*n'(1, _, Dcg_0).
##### optional sequence
Optional sequence is a metasyntactic construct which states that Dcg_0 should either be processed once or not at all:
?(:Dcg_0)//
Optional sequence is a special case of [[variable repetition]],
because ?(Dcg_0) is the same as 'm*n'(0, 1, Dcg_0).
| DCG | Meaning | Name |
|---|---|---|
| `#(?N, :Dcg_0)//` | Process Dcg_0 exactly N times. | specific repetition |
| `*(:Dcg_0)//` | Process Dcg_0 0 or more times. | Kleene star |
| `'*n'(?N, :Dcg_0)//` | Process Dcg_0 at most N times. | |
| `+(:Dcg_0)//` | Process Dcg_0 1 or more times. | Kleene sum |
| `?(:Dcg_0)//` | Process Dcg_0 0 or 1 times. | optional sequence |
| `'m*'(?M, :Dcg_0)//` | Process Dcg_0 at least M times. | |
| `'m*n'(?M, ?N, :Dcg_0)//` | Process Dcg_0 at least M and at most N times. | variable repetition |
It contains the following modules:
| Type | Definition |
|---|---|
media | A compound term of the form media(Super:atom/Sub:atom,Parameters:list(opt)) |
opt | A unary compound term whose predicate letter is an option name and whose argument is a corresponding option value. |
dcg/dcg_extdebug_extdefaultdictDictionaries.
dlistDifference lists.
file_extHandling files and directories.
graph/gmlgraph/graph_extgraph/jgfhash_exthttp/http_client2http/http_generichttp/http_paginationhttp/http_resourcehttp/http_serverjson_ext
This module provides extended JSON support on top of the standard
library http/json:
json_load(+File:atom, -Structure:dict) is det.json_save(+File:atom, +Structure:dict) is det.list_extmath_extmedia_typenlp/nlp_langos_extRunning external processes, streaming to/from external processes.
paginationpair_extpppuresort_extstream_extSupport for recoding, unpacking, sorting, and hasing streams.
string_exttaskterm_extthread_exturi_extConstructing/decomposing URIs.
xml_extThis module allows Prolog goals to be called on a stream that encodes an XML DOM:
list(atom), :Goal_1) is det.`The following predicates allow the encoding of an XML file or stream to be determined:
xml_encoding(+In:stream, -Encoding:atom) is semidet.xml_file_encoding(+File:atom, -Encoding:atom) is semidet.xsdSupport for XML Schema 1.1 Part 2: Datatypes.
Pack contains 62 files holding a total of 508K bytes.