PLOGHELP ARROW                             Jonathan Laventhol March 1984
                                 Revised by Kathryn Seifert  August 1986

Operator used to specify grammar rules

    <prologterm> --> {<prologterm>}*.

Keywords: grammar rules, grammar, natural language, syntax, symbols,
          operators


The infix operator '-->' is provided to facilitate the expression of
definite clause grammars in Prolog (see PLOGHELP * GRAMMAR_RULE). For
information on the conditional arrow ->, see PLOGHELP * CONDITIONAL.

As an example, if you wanted to express the fact that a sentence can
take the form of a noun phrase followed by a verb phrase, you could
write:

    sentence --> noun_phrase, verb_phrase.

The following expresses that a verb_phrase can be composed of a verb, or
of a verb followed by a noun_phrase:

    verb_phrase --> verb.
    verb_phrase --> verb, noun_phrase.

See PLOGHELP * GRAMMAR_RULE for more details on ways of using this
operator.

Grammar rules expressed in this form are shorthand for normal Prolog
terms.  The built-in predicate 'expand_term/2' takes a grammar rule
written using the '-->' notation as its first argument, and the Prolog
clause equivalent of the grammar rule as its second argument (see
PLOGHELP * EXPAND_TERM).  Here are some examples:

    ?- expand_term((verb_phrase --> verb), X).
    X = verb_phrase(_1, _2) :- verb(_1, _2)
    ? 
    yes

    ?- expand_term((sentence(s(NP, VP)) --> np(NP), vp(VP)), X).
    NP = _1
    VP = _2
    X = sentence(s(_1, _2), _3, _4) :- np(_1, _3, _5) , vp(_2, _5, _4)
    ? 
    yes


-- RELATED DOCUMENTATION ----------------------------------------------

PLOGHELP * EXPAND_TERM
 Predicate to translate grammar rules into normal Prolog clauses

PLOGHELP * GRAMMARS
 Overview of HELP files dealing with grammars and natural language

PLOGHELP * GRAMMAR_RULE
 Prolog facilities for expressing definite clause grammars
