{
{   This request evaluates an SCL expression.  It is the internal version of
{ clp$evaluate_expression used within the SCL interpreter.
{
{       CLP$INTERNAL_EVALUATE_EXPR (PARSE, TYPE_DESCRIPTION, WORK_AREA,
{         RESULT_TYPE_DESCRIPTION, RESULT, STATUS)
{
{ PARSE: (input, output)  This parameter specifies the expression to be
{       evaluated.  Upon entry it designates the first lexical unit of the
{       expression.  Upon exit it designates the lexical unit that follows the
{       expression.  Note the following:
{
{       1.  If the TYPE_DESCRIPTION specifies a union (ANY) or RANGE type, the
{           INDEX_LIMIT field of the PARSE parameter should "point" to the
{           position just past the end of the expression.  This restriction is
{           necessary in order to distinguish between the myriad possible types
{           of expressions.  For all other types of expressions, this routine
{           determines where it "thinks" the end of the expression is.
{
{       2.  If the TYPE_DESCRIPTION specifies an APPLICATION type with the
{           BALANCE_BRACKETS attribute, the INDEX_LIMIT field of the PARSE
{           parameter is ignored.  This allows the special parsing needed for
{           this case to be centrailized in this one place.  However, callers
{           of this routine that may specify such a type must check for the
{           INDEX_LIMIT being exceeded and take appropriate action.
{
{ TYPE_DESCRIPTION: (input)  This parameter specifies the data type the
{       expression is expected to result in.
{
{ WORK_AREA: (input, output)  This parameter specifies an area of storage that
{       will be used to construct the expression's result value.  The current
{       position of this sequence pointer is updated to reflect the amount of
{       storage used by the request.  The expression's result value is
{       completely contained within the used part of this sequence.
{
{ RESULT_TYPE_DESCRIPTION: (output)  This parameter specifies the type
{       description for for the result of the expresison.  It will be non-NIL
{       only if the expression consists entirely of a reference to a variable
{       or procedure parameter.
{
{ RESULT: (output)  This parameter specifies the expression's result value.
{
{ STATUS: (output)  This parameter specifies the request status.
{
