Programmer Guide/Command Reference/EVAL Intro/EVAL: Difference between revisions

From STX Wiki
Jump to navigationJump to search
No edit summary
Line 8: Line 8:
== Syntax ==
== Syntax ==
An <code>EVAL</code> command uses the following general syntax:
An <code>EVAL</code> command uses the following general syntax:
  <code>result := eval expression</code>
  result := eval expression
  <code>result := evalcheck expression</code>
  result := evalcheck expression
An expression may be either a numerical expression, e.g.
An expression may be either a numerical expression, e.g.
  <code>result := eval (5 * 10) % 3</code>
  result := eval (5 * 10) % 3
or a subcommand, e.g.
or a subcommand, e.g.
  <code>result := eval init(10,1,1)</code>
  result := eval init(10,1,1)
or a combination thereof:
or a combination thereof:
  <code>result := eval 5+max(fill(6,1,1))</code>
  result := eval 5+max(fill(6,1,1))


If the expression is syntactically ill-formed, an error (<code>EVAL</code>) or warning (<code>EVALCHECK</code>) is reported. See the example script <code>expression_check.sts</code> for details.
If the expression is syntactically ill-formed, an error (<code>EVAL</code>) or warning (<code>EVALCHECK</code>) is reported. See the example script <code>expression_check.sts</code> for details.

Revision as of 20:57, 22 March 2011

The EVAL command can be used to evaluate numerical expressions. These expressions can be constants, scalar variables, vectors, matrices or EVAL subcommands.

// if the variable #v does not exist then the following command
// assigns a table item to #v.
$#v := eval vv(1,2,3,4)
// if #v is a value item, then #v remains a value item.

Syntax

An EVAL command uses the following general syntax:

result := eval expression
result := evalcheck expression

An expression may be either a numerical expression, e.g.

result := eval (5 * 10) % 3

or a subcommand, e.g.

result := eval init(10,1,1)

or a combination thereof:

result := eval 5+max(fill(6,1,1))

If the expression is syntactically ill-formed, an error (EVAL) or warning (EVALCHECK) is reported. See the example script expression_check.sts for details.

Numerical Comparison Operators

The EVAL command supports the following numerical comparison operators:

> less than
< greater than
<= less than or equal to
>= greater than or equal to
== equal to
!= not equal to

Note that two numbers/vectors/matrices are considered equal if (and only if)

  1. their dimensions are the same; and
  2. all elements are numerically equal.

Logical Operators

The EVAL command supports the following logical operators:

logical or
&& logical and
! unary not

A C-like '? :' operator is also supported:

result := eval 1 < 2 ? 1+2 : 1-2 // result is 3

Note that unlike C, nested uses of this operator must be surrounded by brackets, e.g.:

result := eval 1 > 2 ? (5 == 5 ? 5 : 0) : (4 == 5 ? 3 : 4) // returns 4

Examples

See the script eval_examples.sts for an extensive list of examples.

Version History

The EVAL command was added to the S_TOOLS-STx language in version 3.7.0. The EVAL command replaces and extends the EVALUATE command. If the EVAL command is not assigning to an existing item, a table is assigned. Note that the current maximum number of arguments is 64 (S_TOOLS-STx version 3.8.0). As of version 3.7.0, S_TOOLS-STx has more numerical objects than just the scalars INT and NUM.

Navigation menu

Personal tools