Next: Switch Statement Symbols, Previous: Class Symbols, Up: Syntactic Symbols

#### 10.2.3 Conditional Construct Symbols

Here is a (totally contrived) example which illustrates how syntax is assigned to various conditional constructs:

          1: void spam( int index )
          2: {
          3:     for( int i=0; i<index; i++ )
          4:     {
          5:         if( i == 10 )
          6:             do_something_special();
          7:         else
          8:           silly_label:
          9:             do_something( i );
         10:     }
         11:     do {
         12:         another_thing( i-- );
         13:     }
         14:     while( i > 0 );
         15: }

Only the lines that illustrate new syntactic symbols will be discussed.

Line 4 has a brace which opens a conditional's substatement block. It is thus assigned `substatement-open` syntax, and since line 5 is the first line in the substatement block, it is assigned `statement-block-intro` syntax. Line 10 contains the brace that closes the inner substatement block, and is therefore given the syntax `block-close` 1. Line 13 is treated the same way.

Lines 6 and 9 are also substatements of conditionals, but since they don't start blocks they are given `substatement` syntax instead of `substatement-open`.

Line 8 contains a label, which is normally given `label` syntax. This one is however a bit special since it's between a conditional and its substatement. It's analyzed as `substatement-label` to let you handle this rather odd case differently from normal labels.

Line 7 start with an `else` that matches the `if` statement on line 5. It is therefore given the `else-clause` syntax and is anchored on the matching `if`. The `try`-`catch` constructs in C++ and Java are treated this way too, except that `catch` and (in Java) `finally`, are marked with `catch-clause`.

The `while` construct on line 14 that closes a `do` conditional is given the special syntax `do-while-closure` if it appears on a line by itself. Note that if the `while` appeared on the same line as the preceding close brace, that line would still have `block-close` syntax.

#### Footnotes

[1] `block-open` is used only for “free-standing” blocks, and is somewhat rare (see Literal Symbols for an example.)