expand_term/2  [hookable]expand_term(+Term1, -Term2)
   
Transforms source file terms into Prolog clauses before they are compiled. 
Normally called by the compiler, but can be called directly. The transform
can be customized by defining user:term_expansion/6.
   
When a source file is compiled, expand_term/2 is called with
the virtual clauses beginning_of_file before and
end_of_file after the real Prolog clauses, to give
user:term_expansion/6 an opportunity to perform some action
at the beginning and end of a source file. Please note: the
virtual clause beginning_of_file is “seen” before any
module declaration, i.e. before the source module has been updated.
Usually called by the built-in predicates that read code and not directly by user programs.
in particular used to translate grammar rules, written with
-->/2, into ordinary Prolog clauses, written with :-/2. 
If Term1 is a grammar rule, then Term2 is the
corresponding clause.  Otherwise Term2 is simply Term1
unchanged.
   
Calls user:term_expansion/6.
Prints messages for exceptions raised by user:term_expansion/6.
phrase/[2,3],
-->/2,
ref-lod-exp.