home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam    

Book HomeActionScript: The Definitive GuideSearch this book

Chapter 14. Lexical Structure

The lexical structure of a language is the set of rules that govern its syntactic composition. We must follow these rules when writing the source code of our scripts.

14.1. Whitespace

The tab, space, and carriage return (i.e., line break) characters are used in ActionScript just like they are in English to separate words from each other so that they don't all runtogetherlikethis. In programmer-speak, these characters are known as whitespace and are used in source code to separate tokens (the keywords, identifiers, and expressions roughly akin to words, phrases, and sentences in English). Here is an example of incorrect and correct whitespace usage:

varx   // Oops! No whitespace between the keyword var and the variable x.
var x  // That's better...because of the whitespace the interpreter
       // can now read our code.

Whitespace is optional when there is some other delimiter (separator) that tells ActionScript where one token ends and another begins. The following code is quite legitimate because the operators =, +, and / separate x, 10, 5, and y from one another:

x=10+5/y;        // Crowded, but legitimate
x = 10 + 5 / y;  // Easier to read, but the same as above

Similarly, whitespace is optional when there are other characters such as square brackets, parentheses, curly braces, commas, and greater-than or less-than signs to act as delimiters. These are all perfectly legal if somewhat claustrophobic:

for(var i=0;i<10;i++){trace(i);}

Extra whitespace is simply a matter of style, because it is ignored by the ActionScript interpreter. That said, there are conventions you should follow to make your code more readable. For example, the following is another legitimate way to rewrite the earlier assignment expression, but it is obviously harder to read:

x =
  + 5
  / y;

Notice that the statement is terminated by the semicolon not the line breaks. In nearly all cases, line breaks are inconsequential and do not act as statement terminators. Hence, we often use one or more line breaks (in concert with spaces or tabs) to make complex statements easier to read:

myNestedArray = [[x, y, z],
                [1, 2, 3],
                ["joshua davis", "yugo nakamura", "james patterson"]];
// Much nicer than:
myNestedArray = [[x, y, z], [1, 2, 3],["joshua davis","yugo nakamura",
"james patterson"]];
// And also nicer than:
myNestedArray = [[x, y, z],
[1, 2, 3],
["joshua davis","yugo nakamura","james patterson"]];

You don't need to do anything special if you want to break a statement onto more than one line. Simply add a carriage return and keep typing. For good advice on making your code more readable, see Code Complete by Steve McConnell (Microsoft Press). There are, however, times when line breaks may be misinterpreted as statement terminators, as we'll see in the next section.

Note that whitespace within the quotes that delimit a string is relevant whereas whitespace outside the quotes is ignored. Compare these two examples:

x = 5;
trace("The value of x is"  +   x);   // Displays: "The value of x is5"
trace("The value of x is "+x);       // Displays: "The value of x is 5"

Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.