/usr/lib/swipl/library/prolog_source.pl
AllApplicationManualNameSummaryHelp

  • swipl
    • library
      • settings.pl -- Setting management
      • error.pl -- Error generating support
      • broadcast.pl -- Event service
      • debug.pl -- Print debug messages and test assertions
      • lists.pl -- List Manipulation
      • pairs.pl -- Operations on key-value lists
      • option.pl -- Option list processing
      • arithmetic.pl -- Extensible arithmetic
      • pldoc.pl -- Process source documentation
      • apply.pl -- Apply predicates on a list
      • operators.pl -- Manage operators
      • 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_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
        • quasi_quotation_syntax/2
        • xref_open_source/2
        • xref_close_source/2
      • pengines.pl -- Pengines: Web Logic Programming Made Easy
      • time.pl -- Time and alarm library
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • zip.pl -- Access resource ZIP archives
      • uri.pl -- Process URIs
      • socket.pl -- Network socket (TCP and UDP) library
      • thread_pool.pl -- Resource bounded thread management
      • rbtrees.pl -- Red black trees
      • gensym.pl -- Generate unique symbols
      • readutil.pl -- Read utilities
      • url.pl -- Analysing and constructing URL
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • memfile.pl
      • sgml.pl -- SGML, XML and HTML parser
      • iostream.pl -- Utilities to deal with streams
      • dialect.pl -- Support multiple Prolog dialects
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • pure_input.pl -- Pure Input from files and streams
      • base64.pl -- Base64 encoding and decoding
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • ordsets.pl -- Ordered set manipulation
      • oset.pl -- Ordered set manipulation
      • record.pl -- Access compound arguments by name
      • filesex.pl -- Extended operations on files
      • charsio.pl -- I/O on Lists of Character Codes
      • sandbox.pl -- Sandboxed Prolog code
      • assoc.pl -- Binary associations
      • prolog_format.pl -- Analyse format specifications
      • when.pl -- Conditional coroutining
      • modules.pl -- Module utility predicates
      • term_to_json.pl
      • uuid.pl -- Universally Unique Identifier (UUID) Library
      • ssl.pl -- Secure Socket Layer (SSL) library
      • crypto.pl -- Cryptography and authentication library
      • solution_sequences.pl -- Modify solution sequences
      • nb_set.pl -- Non-backtrackable sets
      • terms.pl -- Term manipulation
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • sha.pl -- SHA secure hashes
      • random.pl -- Random numbers
      • pcre.pl -- Perl compatible regular expression matching for SWI-Prolog
      • pengines_io.pl -- Provide Prolog I/O for HTML clients
      • listing.pl -- List programs and pretty print clauses
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • prolog_clause.pl -- Get detailed source-information about a clause
      • occurs.pl -- Finding and counting sub-terms
      • yall.pl -- Lambda expressions
      • prolog_stream.pl -- A stream with Prolog callbacks
      • process.pl -- Create processes and redirect I/O
      • zlib.pl -- Zlib wrapper for SWI-Prolog
      • bdb.pl -- Berkeley DB interface
      • hash_stream.pl -- Maintain a hash on a stream
      • md5.pl -- MD5 hashes
      • porter_stem.pl
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl -- Operations on atoms
      • ctypes.pl -- Character code classification
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • prolog_colour.pl -- Prolog syntax colouring support.
      • predicate_options.pl -- Access and analyse predicate options
      • lazy_lists.pl -- Lazy list handling
      • ugraphs.pl -- Graph manipulation library
      • xpath.pl -- Select nodes in an XML DOM
      • doc_http.pl -- Documentation server
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl -- A package manager for Prolog
      • git.pl -- Run GIT commands
      • crypt.pl
      • persistency.pl -- Provide persistent dynamic predicates
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • prolog_breakpoints.pl -- Manage Prolog break-points
      • unix.pl -- Unix specific operations
      • mallocinfo.pl -- Memory allocation details
      • chr.pl
      • dicts.pl -- Dict utilities
      • dif.pl -- The dif/2 constraint
      • varnumbers.pl -- Utilities for numbered terms
      • shell.pl -- Elementary shell commands
      • uid.pl -- User and group management on Unix systems
      • syslog.pl -- Unix syslog interface
      • main.pl -- Provide entry point for scripts
      • editline.pl -- BSD libedit based command line editing
      • console_input.pl
      • base32.pl -- Base32 encoding and decoding
      • backcomp.pl -- Backward compatibility
      • system.pl -- System utilities
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl -- Co-Logic Programming
      • date.pl -- Process dates and times
      • heaps.pl -- heaps/priority queues
      • sort.pl
      • statistics.pl -- Get information about resource usage
      • optparse.pl -- command line parsing
      • prolog_stack.pl -- Examine the Prolog stack
      • streampool.pl -- Input multiplexing
      • edit.pl -- Editor interface
      • make.pl -- Reload modified source files
      • check.pl -- Consistency checking
      • prolog_codewalk.pl -- Prolog code walker
      • prolog_metainference.pl -- Infer meta-predicate properties
      • udp_broadcast.pl -- A UDP broadcast proxy
      • writef.pl -- Old-style formatted write
      • isub.pl -- isub: a string similarity measure
      • sgml_write.pl -- XML/SGML writer module
      • c14n2.pl -- C14n2 canonical XML documents
      • prolog_history.pl -- Per-directory persistent commandline history
      • readline.pl -- GNU readline interface
      • double_metaphone.pl -- Phonetic string matching
      • rdf.pl
      • rdf_parser.pl
      • rewrite.pl
      • quintus.pl -- Quintus compatibility
      • rdf_triple.pl -- Create triples from intermediate representation
      • unicode.pl -- Unicode string handling
      • prolog_autoload.pl -- Autoload all dependencies
      • archive.pl -- Access several archive formats
      • doc_latex.pl -- PlDoc LaTeX backend
      • threadutil.pl -- Interactive thread utilities
      • rlimit.pl
      • test_cover.pl -- Clause cover analysis
      • plunit.pl -- Unit Testing
      • paxos.pl -- A Replicated Data Store
      • doc_files.pl -- Create stand-alone documentation files
      • help.pl -- Text based manual
      • odbc.pl
      • prolog_config.pl -- Provide configuration information
      • thread.pl -- High level thread primitives
      • pwp.pl -- Prolog Well-formed Pages
      • rdf_write.pl -- Write RDF/XML from a list of triples
      • xsdp_types.pl -- XML-Schema primitive types
      • qsave.pl -- Save current program as a state or executable
      • xmlenc.pl -- XML encryption library
      • protobufs.pl -- Google's Protocol Buffers
      • snowball.pl -- The Snowball multi-lingual stemmer library
      • cgi.pl -- Read CGI parameters
 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.