# $Id$
#
# >>Copyright::
# Copyright (c) 1992-1996, Ian Clatworthy (ianc@mincom.com).
# You may distribute under the terms specified in the LICENSE file.
#
# >>History::
# -----------------------------------------------------------------------
# Date      Who     Change
# 29-Feb-96 ianc    SDF 2.000
# -----------------------------------------------------------------------
#

H1: Expressions


H2: Introduction

Expressions are used in several places within [[SDF]] including:

* attribute values
* macro argument values
* filter parameter values
* evaluation within paragraph text.

The value of an expression can be placed into a paragraph
by delimiting it with the special symbols E<2[> and E<2]>.
For example:

V:   The current file is [[DOC_FILE]].


H2: Types of expressions

An expression is either:

* an [[SDF]] variable name (e.g. DOC_AUTHOR)
* a [[Perl]] expression.

If an expression is a single word, it is the value of
a variable. Otherwise, it is evaluated as a Perl expression.
A Perl expression is typically one of the following:

* a numeric literal (e.g. {{E:213}})
* a string literal (e.g. {{E:"User Guide"}})
* a subroutine call (e.g. {{E:length("User Guide")}}).


H2: Accessing variables within Perl expressions

Within a [[Perl]] expression, [[SDF]] variables are available
via the {{var}} associative array. The syntax used by [[Perl]]
for accessing a value within an associative array is:

E:  "$" array_name "{" string_index "}"

Some examples are:

^ get the length of the DOC_AUTHOR variable:

E:      length($var{'DOC_AUTHOR'})

+ concatenate the document name and type:

E:      "$var{'DOC_NAME'} $var{'DOC_TYPE'}"
