/usr/local/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
      • lists.pl
      • broadcast.pl
      • shlib.pl
      • option.pl -- Option list processing
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl
      • settings.pl
      • arithmetic.pl -- Extensible arithmetic
      • main.pl
      • readutil.pl
      • operators.pl
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl -- Examine Prolog source-files
        • quasi_quotation_syntax/2
        • xref_open_source/2
        • xref_close_source/2
        • 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
      • record.pl
      • quasi_quotations.pl
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl
      • ordsets.pl
      • random.pl -- Random numbers
      • base64.pl
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • yall.pl -- Lambda expressions
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl -- Binary associations
      • prolog_format.pl
      • predicate_options.pl
      • csv.pl
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl
      • modules.pl
      • occurs.pl -- Finding and counting sub-terms
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • prolog_colour.pl
      • lazy_lists.pl -- Lazy list handling
      • ugraphs.pl
      • url.pl
      • www_browser.pl
      • prolog_pack.pl
      • git.pl -- Run GIT commands
      • rbtrees.pl -- Red black trees
      • dif.pl
      • charsio.pl
      • prolog_stack.pl -- Examine the Prolog stack
      • edinburgh.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • wfs.pl
      • dialect.pl -- Support multiple Prolog dialects
      • prolog_code.pl
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl
      • varnumbers.pl
      • backcomp.pl
      • base32.pl
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl
      • date.pl
      • heaps.pl
      • statistics.pl
      • terms.pl
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • when.pl -- Conditional coroutining
      • threadutil.pl -- Interactive thread utilities
      • zip.pl
      • prolog_debug.pl
      • make.pl
      • check.pl -- Consistency checking
      • macros.pl
      • listing.pl
      • prolog_codewalk.pl
      • prolog_metainference.pl
      • prolog_profile.pl
      • prolog_coverage.pl
      • thread.pl -- High level thread primitives
      • optparse.pl
      • portray_text.pl
      • prolog_history.pl
      • explain.pl
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • prolog_autoload.pl
      • increval.pl
      • tables.pl -- XSB interface to tables
      • fastrw.pl
      • prolog_versions.pl
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
      • exceptions.pl
      • prolog_config.pl
      • quintus.pl
      • nb_set.pl
      • system.pl
      • hashtable.pl
 read_source_term_at_location(+Stream, -Term, +Options) is semidet
Try to read a Prolog term form an arbitrary location inside a file. Due to Prolog's dynamic syntax, e.g., due to operator declarations that may change anywhere inside the file, this is theoreticaly impossible. Therefore, this predicate is fundamentally heuristic and may fail. This predicate is used by e.g., clause_info/4 and by PceEmacs to colour the current clause.

This predicate has two ways to find the right syntax. If the file is loaded, it can be passed the module using the module option. This deals with module files that define the used operators globally for the file. Second, there is a hook alternate_syntax/4 that can be used to temporary redefine the syntax.

The options below are processed in addition to the options of read_term/3. Note that the line and offset options are mutually exclusive.

line(+Line)
If present, start reading at line Line.
offset(+Characters)
Use seek/4 to go to the indicated location. See seek/4 for limitations of seeking in text-files.
module(+Module)
Use syntax from the given module. Default is the current `source module'.
operators(+List)
List of additional operator declarations to enforce while reading the term.
error(-Error)
If no correct parse can be found, unify Error with a term Offset:Message that indicates the (character) location of the error and the related message. Adding this option makes read_source_term_at_location/3 deterministic (det).
See also
- Use read_source_term/4 to read a file from the start.
- alternate_syntax/4 for locally scoped operators.