AutoGen - The Automated Program Generator: 3.3.1 Apply Code

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 3.3.1 Apply Code

The "apply code" selected determines the method of evaluating the expression. There are five apply codes, including the non-use of an apply code.

‘`no apply code`’

  This is the most common expression type. Expressions of this sort come in three flavors:

  ‘`<value-name>`’

    The result is the value of `value-name`, if defined. Otherwise it is the empty string.

  ‘`<basic-expr>`’

    The result of the basic expression is the result of the full expression, See section Basic Expression.

  ‘`<value-name> <basic-expr>`’

    If there is a defined value for `value-name`, then the `basic-expr` is evaluated. Otherwise, the result is the empty string.

‘`% <value-name> <basic-expr>`’

  If `value-name` is defined, use `basic-expr` as a format string for sprintf. Then, if the `basic-expr` is either a back-quoted string or a parenthesized expression, then hand the result to the appropriate interpreter for further evaluation. Otherwise, for single and double quote strings, the result is the result of the sprintf operation. Naturally, if `value-name` is not defined, the result is the empty string.

  For example, assume that `fumble` had the string value, `stumble`:

      [+ % fumble `printf '%%x\\n' $%s` +]

  This would cause the shell to evaluate "`printf '%x\n' $stumble`". Assuming that the shell variable `stumble` had a numeric value, the expression result would be that number, in hex. Note the need for doubled percent characters and backslashes.

‘`? <value-name> <basic-expr-1> <basic-expr-2>`’

  Two `basic-expr`-s are required. If the `value-name` is defined, then the first `basic-expr-1` is evaluated, otherwise `basic-expr-2` is.

‘`- <value-name> <basic-expr>`’

  Evaluate `basic-expr` only if `value-name` is not defined.

‘`?% <value-name> <basic-expr-1> <basic-expr-2>`’

  This combines the functions of ‘`?`’ and ‘`%`’. If `value-name` is defined, it behaves exactly like ‘`%`’, above, using `basic-expr-1`. If not defined, then `basic-expr-2` is evaluated.

  For example, assume again that `fumble` had the string value, `stumble`:

      [+ ?% fumble `cat $%s` `pwd` +]

  This would cause the shell to evaluate "`cat $stumble`". If `fumble` were not defined, then the result would be the name of our current directory.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated by Bruce Korb on July 25, 2010 using texi2html 1.82.