Curly bracket programming language

Curly bracket programming language

Curly brace or bracket programming languages are those which use balanced brackets ({ and }, also known as "squiggly brackets", "brace brackets" or simply "braces") to make blocks in their syntax or formal 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.


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 standard ECMAScript, 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, and Visual Basic), the Off-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.


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 an at 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 compilers.

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), and ANSI C introduced "trigraphs" that can be used instead of such problematic characters. All trigraphs consist of two question marks (“??”) followed by a character that is not redefined in the national 7 bit ASCII character sets. The trigraphs for ‘{’ and ‘}’, respectively, are “??<” and “??>”.


See .

Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Eiffel (programming language) — Infobox programming language name = Eiffel paradigm = object oriented year = 1986 designer = Bertrand Meyer developer = Bertrand Meyer Eiffel Software latest release version = 4.2 latest release date = Feb 6, 1998 typing = static typing, strong… …   Wikipedia

  • Groovy (programming language) — Infobox programming language name = Groovy paradigm = object oriented, scripting year = 2003 designer = JCP developer = Guillaume Laforge (Project Manager and JSR 241 Spec Lead) latest release version = 1.5.7 latest release date = release… …   Wikipedia

  • Bracket — 〈 redirects here. It is not to be confused with く, a Japanese kana. This article is about bracketing punctuation marks. For other uses, see Bracket (disambiguation). Due to technical restrictions, titles like :) redirect here. For typographical… …   Wikipedia

  • Comparison of programming languages (syntax) — Programming language comparisons General comparison Basic syntax Basic instructions Arrays Associative arrays String operations …   Wikipedia

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

  • Constructor (object-oriented programming) — Programming language comparisons General comparison Basic syntax Basic instructions Arrays Associative arrays String operations …   Wikipedia

  • Intentional programming — In computer programming, intentional programming is a collection of concepts which enable software source code to reflect the precise information, called intention , which programmers had in mind when conceiving their work. By closely matching… …   Wikipedia

  • Printf — The class of printf functions (which stands for print formatted ) is a class of functions, typically associated with curly bracket programming languages, that accept a string parameter (called the format string) which specifies a method for… …   Wikipedia

  • Foreach — For each (or foreach) is a computer language idiom for traversing items in a collection. Foreach is usually used in place of a standard for statement. Unlike other for loop constructs, however, foreach loops [cite web… …   Wikipedia

  • BCPL — Infobox programming language name = BCPL paradigm = procedural, imperative, structured year = 1966 designer = Martin Richards developer = latest release version = latest release date = latest test version = latest test date = typing =… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”