/usr/lib/swipl/library/prolog_source.pl
All Application Manual Name SummaryHelp

  • swipl
    • library
      • error.pl
      • debug.pl -- Print debug messages and test assertions
      • apply.pl -- Apply predicates on a list
      • lists.pl -- List Manipulation
      • broadcast.pl
      • shlib.pl
      • option.pl
      • thread_pool.pl
      • gensym.pl -- Generate unique symbols
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl
      • readutil.pl
      • operators.pl
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl -- Examine Prolog source-files
        • prolog_read_source_term/4
        • requires_library/2
        • load_quasi_quotation_syntax/2
        • read_source_term_at_location/3
        • prolog_file_directives/3
        • prolog_open_source/2
        • prolog_close_source/1
        • prolog_canonical_source/2
        • file_name_on_path/2
        • file_alias_path/2
        • path_segments_atom/2
        • directory_source_files/3
        • valid_term_position/2
        • quasi_quotation_syntax/2
        • xref_open_source/2
        • xref_close_source/2
      • record.pl
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • yall.pl
      • assoc.pl
      • prolog_format.pl
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl
      • ordsets.pl -- Ordered set manipulation
      • random.pl
      • base64.pl -- Base64 encoding and decoding
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • predicate_options.pl
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl -- Operations on atoms
      • modules.pl
      • occurs.pl -- Finding and counting sub-terms
      • prolog_xref.pl
      • prolog_colour.pl -- Prolog syntax colouring support.
      • lazy_lists.pl
      • ugraphs.pl -- Graph manipulation library
      • url.pl
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl -- A package manager for Prolog
      • git.pl
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • quintus.pl
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • prolog_wrap.pl -- Wrapping predicates
      • dialect.pl
      • date.pl -- Process dates and times
      • persistency.pl -- Provide persistent dynamic predicates
      • iostream.pl -- Utilities to deal with streams
      • prolog_code.pl
      • strings.pl -- String utilities
      • dif.pl -- The dif/2 constraint
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • terms.pl
      • ansi_term.pl
      • threadutil.pl -- Interactive thread utilities
      • prolog_stack.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • wfs.pl -- Well Founded Semantics interface
      • sort.pl
      • dicts.pl
      • varnumbers.pl -- Utilities for numbered terms
      • rbtrees.pl -- Red black trees
      • base32.pl -- Base32 encoding and decoding
      • charsio.pl -- I/O on Lists of Character Codes
      • codesio.pl
      • coinduction.pl -- Co-Logic Programming
      • heaps.pl -- heaps/priority queues
      • statistics.pl
      • when.pl -- Conditional coroutining
      • backcomp.pl
      • ctypes.pl -- Character code classification
      • increval.pl
      • tables.pl -- XSB interface to tables
      • listing.pl -- List programs and pretty print clauses
      • qsave.pl
      • tty.pl -- Terminal operations
      • zip.pl
      • prolog_autoload.pl -- Autoload all dependencies
      • check.pl
      • optparse.pl
      • prolog_debug.pl -- User level debugging tools
      • make.pl
      • prolog_coverage.pl
      • prolog_codewalk.pl -- Prolog code walker
      • readln.pl
      • nb_set.pl -- Non-backtrackable sets
      • shell.pl
      • intercept.pl
      • prolog_history.pl -- Per-directory persistent commandline history
      • help.pl
      • prolog_metainference.pl -- Infer meta-predicate properties
      • prolog_config.pl -- Provide configuration information
      • system.pl -- System utilities
      • writef.pl
      • vm.pl
      • prolog_profile.pl -- Execution profiler
      • edit.pl -- Editor interface
      • explain.pl -- Describe Prolog Terms
      • qpforeign.pl
      • prolog_jiti.pl
      • prolog_trace.pl
      • thread.pl -- High level thread primitives
      • files.pl
      • streams.pl -- Manage Prolog streams
      • exceptions.pl
      • fastrw.pl
      • macros.pl
      • nb_rbtrees.pl
      • prolog_deps.pl
      • rwlocks.pl
      • portray_text.pl -- Portray text
      • hashtable.pl
      • check_installation.pl -- Check installation issues and features
      • oset.pl
 valid_term_position(@Term, @TermPos) is semidet
Check that a Term has an appropriate TermPos layout. An incorrect TermPos results in either failure of this predicate or an error.

If a position in TermPos is a variable, the validation of the corresponding part of Term succeeds. This matches the term_expansion/4 treats "unknown" layout information. If part of a TermPos is given, then all its "from" and "to" information must be specified; for example, string_position(X,Y) is an error but string_position(0,5) succeeds. The position values are checked for being plausible -- e.g., string_position(5,0) will fail.

This should always succeed:

read_term(Term, [subterm_positions(TermPos)]),
valid_term_position(Term, TermPos)
Arguments:
Term- Any Prolog term including a variable).
TermPos- The detailed layout of the term, for example from using read_term(Term, subterm_positions(TermPos).
Errors
- existence_error(matching_rule, Subterm) if a subterm of Term is inconsistent with the corresponding part of TermPos.
See also
- read_term/2, read_term/3, term_string/3
- expand_term/4, term_expansion/4, expand_goal/4, expand_term/4
- clause_info/4, clause_info/5
- unify_clause_hook/5