- swipl
- library
- error.pl
- debug.pl
- apply.pl -- Apply predicates on a list
- lists.pl
- broadcast.pl -- Event service
- shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
- option.pl -- Option list processing
- thread_pool.pl -- Resource bounded thread management
- gensym.pl -- Generate unique symbols
- settings.pl
- arithmetic.pl -- Extensible arithmetic
- main.pl -- Provide entry point for scripts
- readutil.pl -- Read utilities
- operators.pl -- Manage operators
- pairs.pl
- prolog_source.pl -- Examine Prolog source-files
- quasi_quotations.pl -- Define Quasi Quotation syntax
- url.pl -- Analysing and constructing URL
- www_browser.pl -- Open a URL in the users browser
- prolog_colour.pl -- Prolog syntax colouring support.
- record.pl -- Access compound arguments by name
- prolog_xref.pl -- Prolog cross-referencer data collection
- occurs.pl -- Finding and counting sub-terms
- ordsets.pl -- Ordered set manipulation
- assoc.pl -- Binary associations
- ugraphs.pl -- Graph manipulation library
- solution_sequences.pl -- Modify solution sequences
- atom.pl -- Operations on atoms
- prolog_pack.pl
- git.pl
- ctypes.pl
- utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
- base64.pl -- Base64 encoding and decoding
- persistency.pl -- Provide persistent dynamic predicates
- pure_input.pl -- Pure Input from files and streams
- nb_set.pl -- Non-backtrackable sets
- aggregate.pl -- Aggregation operators on backtrackable predicates
- csv.pl -- Process CSV (Comma-Separated Values) data
- iostream.pl -- Utilities to deal with streams
- dialect.pl
- apply_macros.pl -- Goal expansion rules to avoid meta-calling
- yall.pl -- Lambda expressions
- prolog_code.pl -- Utilities for reasoning about code
- dif.pl -- The dif/2 constraint
- thread.pl -- High level thread primitives
- predicate_options.pl
- rbtrees.pl -- Red black trees
- nb_rbtrees.pl -- Non-backtrackable operations on red black trees
- sandbox.pl
- prolog_format.pl -- Analyse format specifications
- random.pl
- pprint.pl -- Pretty Print Prolog terms
- modules.pl -- Module utility predicates
- lazy_lists.pl -- Lazy list handling
- edinburgh.pl -- Some traditional Edinburgh predicates
- prolog_clause.pl
- prolog_breakpoints.pl
- dicts.pl -- Dict utilities
- threadutil.pl -- Interactive thread utilities
- backcomp.pl -- Backward compatibility
- date.pl -- Process dates and times
- oset.pl -- Ordered set manipulation
- listing.pl
- make.pl -- Reload modified source files
- heaps.pl -- heaps/priority queues
- prolog_coverage.pl -- Coverage analysis tool
- edit.pl -- Editor interface
- ansi_term.pl -- Print decorated text to ANSI consoles
- check.pl
- prolog_codewalk.pl -- Prolog code walker
- shell.pl -- Elementary shell commands
- charsio.pl -- I/O on Lists of Character Codes
- intercept.pl -- Intercept and signal interface
- terms.pl -- Term manipulation
- portray_text.pl
- prolog_profile.pl -- Execution profiler
- quintus.pl
- zip.pl
- optparse.pl -- command line parsing
- prolog_debug.pl -- User level debugging tools
- base32.pl -- Base32 encoding and decoding
- codesio.pl -- I/O on Lists of Character Codes
- coinduction.pl -- Co-Logic Programming
- sort.pl
- statistics.pl
- varnumbers.pl -- Utilities for numbered terms
- when.pl -- Conditional coroutining
- prolog_trace.pl -- Print access to predicates
- prolog_metainference.pl -- Infer meta-predicate properties
- hashtable.pl
- prolog_versions.pl
- tables.pl -- XSB interface to tables
- prolog_stack.pl -- Examine the Prolog stack
- macros.pl
- system.pl
- tty.pl
- prolog_autoload.pl
- strings.pl -- String utilities
- prolog_wrap.pl -- Wrapping predicates
- streams.pl
- increval.pl -- Incremental dynamic predicate modification
- prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
- exceptions.pl
- writef.pl -- Old-style formatted write
- prolog_history.pl -- Per-directory persistent commandline history
- prolog_config.pl -- Provide configuration information
- wfs.pl
- rwlocks.pl
- tableutil.pl -- Table inspection and statistics utilities
- files.pl
- help.pl -- Text based manual
- explain.pl -- Describe Prolog Terms
- fastrw.pl -- Fast reading and writing of terms
- qsave.pl
- prolog_qlfmake.pl -- Compile the library to QLF format
- library
- phrase_from_file(:Grammar, +File) is nondet
- phrase_from_file(:Grammar, +File, +Options) is nondet
- Process the content of File using the DCG rule Grammar. The space
usage of this mechanism depends on the length of the not committed
part of Grammar. Committed parts of the temporary list are reclaimed
by the garbage collector, while the list is extended on demand due
to unification of the attributed tail variable.
Options are passed to open/4 and phrase_from_stream/3. The latter notable allows for
as(chars)to call a DCG compiled for dealing with character lists rather than codes.Below is an example that counts the number of times a string appears in a file. The library dcg/basics provides string//1 matching an arbitrary string and remainder//1 which matches the remainder of the input without parsing.
:- use_module(library(dcg/basics)). file_contains(File, Pattern) :- phrase_from_file(match(Pattern), File). match(Pattern) --> string(_), string(Pattern), remainder(_). match_count(File, Pattern, Count) :- aggregate_all(count, file_contains(File, Pattern), Count).This can be called as (note that the pattern must be a string (code list)):
?- match_count('pure_input.pl', `file`, Count).