- swipl
- library
- error.pl
- debug.pl
- apply.pl
- lists.pl
- broadcast.pl -- Event service
- shlib.pl
- option.pl
- thread_pool.pl
- gensym.pl -- Generate unique symbols
- settings.pl
- arithmetic.pl
- main.pl -- Provide entry point for scripts
- readutil.pl
- operators.pl -- Manage operators
- pairs.pl
- prolog_source.pl -- Examine Prolog source-files
- quasi_quotations.pl
- url.pl -- Analysing and constructing URL
- www_browser.pl
- prolog_colour.pl -- Prolog syntax colouring support.
- record.pl
- prolog_xref.pl -- Prolog cross-referencer data collection
- occurs.pl -- Finding and counting sub-terms
- ordsets.pl -- Ordered set manipulation
- assoc.pl
- ugraphs.pl -- Graph manipulation library
- solution_sequences.pl
- atom.pl
- prolog_pack.pl
- git.pl
- ctypes.pl
- utf8.pl
- base64.pl
- persistency.pl
- pure_input.pl -- Pure Input from files and streams
- nb_set.pl
- aggregate.pl
- csv.pl
- 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
- sandbox.pl
- prolog_format.pl
- random.pl
- pprint.pl
- modules.pl -- Module utility predicates
- lazy_lists.pl
- edinburgh.pl
- prolog_clause.pl
- prolog_breakpoints.pl
- dicts.pl
- threadutil.pl -- Interactive thread utilities
- backcomp.pl
- date.pl -- Process dates and times
- oset.pl
- listing.pl
- make.pl
- heaps.pl -- heaps/priority queues
- prolog_coverage.pl
- edit.pl -- Editor interface
- ansi_term.pl
- check.pl
- prolog_codewalk.pl -- Prolog code walker
- shell.pl
- charsio.pl -- I/O on Lists of Character Codes
- intercept.pl
- terms.pl -- Term manipulation
- portray_text.pl
- prolog_profile.pl
- quintus.pl
- zip.pl
- optparse.pl
- prolog_debug.pl -- User level debugging tools
- base32.pl
- codesio.pl
- coinduction.pl
- sort.pl
- statistics.pl
- varnumbers.pl
- when.pl
- prolog_trace.pl
- prolog_metainference.pl
- hashtable.pl
- prolog_versions.pl
- tables.pl
- prolog_stack.pl -- Examine the Prolog stack
- macros.pl
- system.pl
- tty.pl
- prolog_autoload.pl
- strings.pl
- prolog_wrap.pl
- streams.pl
- increval.pl
- prolog_jiti.pl
- exceptions.pl
- 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).