Did you know ... | Search Documentation: |
Pack logtalk -- logtalk-3.85.0/manuals/_sources/refman/methods/expand_term_2.rst.txt |
.. This file is part of Logtalk https://logtalk.org/ SPDX-FileCopyrightText: 1998-2024 Paulo Moura <pmoura@logtalk.org> SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
.. rst-class:: align-right
built-in method
.. index:: pair: expand_term/2; Built-in method .. _methods_expand_term_2:
::
expand_term(Term, Expansion)
Expands a term. The most common use is to expand a grammar rule into a
clause. Users may override the default Logtalk grammar rule translator
by defining clauses for the :ref:methods_term_expansion_2
hook predicate.
The expansion works as follows: if the first argument is a variable,
then it is unified with the second argument; if the first argument is
not a variable and there are local or inherited clauses for the
term_expansion/2 hook predicate within scope, then this predicate is
called to provide an expansion that is then unified with the second
argument; if the term_expansion/2 predicate is not used and the
first argument is a compound term with functor (-->)/2
then the
default Logtalk grammar rule translator is used, with the resulting
clause being unified with the second argument; when the translator is
not used, the two arguments are unified. The expand_term/2 predicate
may return a single term or a list of terms.
This built-in method may be used to expand a grammar rule into a clause for use with the built-in database methods.
Automatic term expansion is only performed at compile time (to expand terms read from a source file) when using a :term:`hook object`. This predicate can be used by the user to manually perform term expansion at runtime (for example, to convert a grammar rule into a clause).
::
expand_term(?term, ?term) - one
(none)
(none)
.. seealso::
:ref:methods_expand_goal_2
,
:ref:methods_goal_expansion_2
,
:ref:methods_term_expansion_2