MAXScript Language Reference > Names, Literal Constants, and Expressions >

# Expressions

MAXScript is an expression-based language. Every construct in the language is an expression and yields a result; this includes constructs that other languages consider statements. The simplified syntax of the language allows you to build very expressive code. Anywhere you can write an <expr> expression, you can write any construct in MAXScript.

A good example of this is the if construct. In statement-based languages, there is usually one syntax for if statements and another for conditional expressions. In MAXScript, a single syntax is used for both cases.

FOR EXAMPLE,
the following two lines of code are both valid, and their meaning should be obvious:
    if a > b then print c else print d
    x = if a > b then c else d
You can also write the following line, containing a nested if expression and a nested assignment, which itself is an expression:
    x = if (if a > b then c else d) < e then f else (g = 23)

Another example is the block-expression, denoted <block_expr>. It contains a series of <expr> expressions enclosed in parentheses,

FOR EXAMPLE,
    (
    print a
    print b
    if a > b then print "the big a"
    )

Each expression in the block is separated by a line break. You can also write several expressions on one line using a ";" (semicolon) to separate them:

FOR EXAMPLE,
    (print a; print b; if a > b then print "the big a")

Block-expressions are themselves <expr> expressions. They evaluate their component expressions in sequence and yield as their value the value of the last expression in the block.

To create classic block-structured statements,

YOU MIGHT WRITE
    if a > b then
    (
    print c
    x = sqrt (c)
    )
    else
    (
    print d
    x = sin (e)
    )
OR
use a nested block-expression to compute a comparison operand,
    if a > (y = sin b; sqrt(y * z)) then print c

At its simplest, a MAXScript program is made up of <expr> expressions.

An <expr> is defined as any of the following:

    <simple_expr>
    <variable_decls>
    <assignment>
    <context_expr>
    <if_expr>
    <while_loop>
    <do_loop>
    <for_loop>
    <loop_exit>
    <case_expr>
    <try_expr>
    <function_def>
    <function_return>
    <struct_def>
    <max_command>
    <utility_def>
    <rollout_def>
    <tool_def>
    <rcmenu_def>
    <plugin_def>

Theseexpressions constitute the main constructs in MAXScript.

#### See Also

- Simple Expressions

- Context Expressions

- Controlling Program Flow

- Creating Functions

- Structure Definition

- Literal Constants

- Variables - Assignment and Scope

- 3ds Max Commands

- Scripted Utilities

- Utility Clauses

- Scripted Mouse Tools

- Scripted Right-Click Menus

- Scripted Plug-ins