- Curly bracket programming language
Curly brace or bracket
programming language s are those which usebalance dbracket s ({ and }, also known as "squiggly brackets", "brace brackets" or simply "braces") to make blocks in theirsyntax orformal grammar , mainly due to being C-influenced. The main alternate style is the use of paired keywords, although some languages (notably Python and Occam) instead use an off-side style, and Lisp uses parentheses.History
Curly-bracket syntax pre-dates C.
BCPL was the first language to use curly brackets to outline multi-statement function bodies.Ken Thompson used the feature in B, his cut-down version of BCPL. Because C was initially designed after B, it has retained the bracket syntax of B, as have many subsequent languages (C++ , Java,JavaScript and its generalized standardECMAScript , C#, D,PHP , etc.). Pico is a non-C descendant that also uses this style.One common part of curly bracket style is the common style of terminating a statement with a semicolon (;), which is one way for languages to ignore whitespace. BCPL and Pico do not have this rule; a newline is used as a statement terminator in such languages. The Pico indent style is then used, as below (BCPL):
LET FUNC foo(a) = VALOF { b := a + 1 RESULTIS b }
Statement blocks
The name derives from the common syntax of the languages, where blocks of statements are enclosed in curly brackets. For example (using BSD/Allman
indent style , one of many stylistic ways to format a program):for (int i = 0; i < 10; i++) { printf("%d", i); doTask(i); }
Languages in this family are sometimes referred to as C-style, because they tend to have syntax that is strongly influenced by
C syntax . Beside the curly brackets, they often inherit other syntactic features, such as using the semicolon as a statement terminator (not as a separator), and the three-part "for" statement syntax as shown above.Generally, these languages are also considered "free-form languages", meaning that the compiler considers all whitespace to be the same as one blank space, much like
HTML . Considering that, the above code could be written:for(int i=0;i<10;i++){printf("%d",i);doTask(i);}
but this is not recommended, as it becomes difficult to read after the program grows beyond a few statements.
A popular way to work with curly braces is with the
K&R style:int i; for(i = 0; i < 10; i++) { printf("%d", i); doTask(i); }
There are many other ways to identify statement blocks, such as ending keywords that may match beginning keywords (in Ada, Pascal,
REXX , andVisual Basic ), theOff-side rule of indentation (in Python), or other symbols such as parentheses (in Lisp). These ways are not necessarily exclusive: whereas indentation is the default in Haskell, curly brackets can be used when desired.Loops
In C, C++, C#, D, Java, PHP, and Perl: while ("boolean expression") { "statement(s)" }
do { "statement(s)" } while ("boolean expression");
for ("initialization"; "continuation condition"; "incrementing expr") { "statement(s)" }
Conditional statements
In C, C++, C#, D, PHP, and Java: if ("boolean expression") { "statement(s)" }
if ("boolean expression") { "statement(s)" } else { "statement(s)" }
if ("boolean expression") { "statement(s)" } else if ("boolean expression") { "statement (s)" } ... else { "statement(s)" }
switch ("integer expression") { case "constant integer expr": "statement(s)" break; ... default: "statement(s)" break; }
Exception handling
In C# and Java: try { "statement(s)" } catch (exception type) { "statement(s)" } catch (exception type) { "statement(s)" } finally { "statement(s)" }
Objective-C has the same syntax starting with gcc 3.3 and Apple Mac OS X 10.3 , but with anat sign in front of the keywords (@try
,@catch
,@finally
).C++ does not have finally, but otherwise looks similar. C has nothing like this, though some vendors have added the keywords __try and __finally to their
compiler s.Typographical concerns
Some 7 bit national
ISO/IEC 646 sets redefine curly brackets to characters that make programs hardly readable on such designed terminals. To address this problem, BCPL had digraphs (* and *) for { and } (same as Pascal), andANSI C introduced "trigraphs" that can be used instead of such problematic characters. All trigraphs consist of twoquestion mark s (“??”) followed by a character that is not redefined in the national 7 bit ASCII character sets. The trigraphs for ‘{’ and ‘}’, respectively, are “??<” and “??>”.Languages
See .
Wikimedia Foundation. 2010.