Go to the first, previous, next, last section, table of contents.

### `if` statement

There are two forms of `if` statement.

    if ( expression )             if ( expression )
         statement       and           statement
    else
         statement

The interpretation of these forms are obvious. However, be careful when another `if` statement comes at the place for `statement'. Let us examine the following example.

    if ( expression1 )
        if ( expression2 ) statement1
    else
        statement2

One might guess `statement2` after `else` corresponds with the first `if ( expression1 )` by its appearance of indentation. But, as a matter of fact, the `Asir` parser decides that it correspond with the second `if ( expression2 )`. Ambiguity due to such two kinds of forms of `if` statement is thus solved by introducing a rule that a statement preceded by an `else` matches to the nearest preceding `if`. Therefore, rearrangement of the above example for improving readability according to the actual interpretation gives the following.

    if ( expression1 ) {
        if ( expression2 ) statement1 else statement2
    }

On the other hand, in order to reflect the indentation, it must be written as the following.

    if ( expression1 ) {
        if ( expression2 ) statement1
    } else
        statement2

When `if` is used in the top level, the `if` expression should be terminated with `$` or `;`. If there is no terminator, the next expression will be skipped to be evaluated.

Go to the first, previous, next, last section, table of contents.