4.3.1.1 Program transformation with source layout info
This sections documents extended versions of the program transformation predicates that also transform the source layout information. Extended layout information is currently processed, but unused. Future versions will use for the following enhancements:
- More precise locations of warnings and errors
- More reliable setting of breakpoints
- More reliable source layout information in the graphical debugger.
- expand_goal(+Goal1, ?Layout1, -Goal2, -Layout2)
- goal_expansion(+Goal1, ?Layout1, -Goal2, -Layout2)
- expand_term(+Term1, ?Layout1, -Term2, -Layout2)
- term_expansion(+Term1, ?Layout1, -Term2, -Layout2)
- dcg_translate_rule(+In, ?LayoutIn, -Out, -LayoutOut)
- These versions are called before their 2-argument counterparts.
The input layout term is either a variable (if no layout information is
available) or a term carrying detailed layout information as returned by
the
subterm_positions
of read_term/2. The output layout should be a variable if no layout information can be computed for the expansion; a sub-term can also be a variable to indicate “don't know” .