Expression Syntax
Function Calls
Analytica contains many built-in functions, and you can extend these with User-Defined Functions. The syntax for calling an expression is:
F(A,B,C)
where the parameter values A,B, and C may themselves be Analyica expressions. For most (but not all) built-in functions and all User-Defined Functions, parameter values can be listed either by position or by name, or a combination. For example, the following four examples are all identical calls to the function Uniform, specifying parameters by position, by name, and by a combination:
Uniform( 1,100,true ) Uniform( min:1, max:100, Integer:true ) Uniform( Integer:true, min:1, max:100 ) Uniform( 1,100,Integer:true )
Each of these function calls defines a uniform distribution on the integers from 1 to 100. When specifying a parameter by name, the parameter name is followed by a colon, which is then followed by the parameter value.
When parameters are specified by name, they can be specified in any order, as the third example demonstrates. However, once one parameter is specified by name, all parameters that follow must be specified by name.
When a function expects an index or variable parameter, an object identifier must occupy that parameter position. The dot-operator syntax, A.I,may also be used. However, arbitrary expressions, including function calls, cannot appear as a value to an index or variable parameter.
Parameter values are evaluated in various ways when a function call is evaluated, depending on the specific parameter qualifiers in the declaration for the function, and on the evaluation mode when the function is evaluated.
Operator Precedence
Some operations in Analytica are parsed with a higher binding precedence than other operators. For example, exponentiation (^) binds more tightly than multiplication (*) and division (/), which binds more tightly than addition (+) and subtraction (-). Therefore, the following expression
1 / 2 * 3 - 4 / 5 ^ 6 + 7
would parse as
( ( 1 / 2 ) * 3 ) - ( 4 / ( 5 ^ 6 ) ) + 7
The following list shows the binding precedence of Analytica operators, with the highest precedence operators at the top. Those operators in the same bullet have the same level of precedence:
Enable comment auto-refresher