Backus Normal Form

Definition of Backus Normal Form

Backus Normal Form, also known as Backus-Naur Form (BNF), is a notation used to express context-free grammars, which describe the syntax of programming languages and communication protocols. Invented by John Backus in 1959, this notation consists of nonterminal symbols, terminal symbols, and production rules that translate a nonterminal into a sequence of other symbols. BNF allows for a concise and unambiguous representation of a language’s structure, enabling easier parsing, analysis, and generation of programs.


The phonetics of “Backus Normal Form” can be represented using the International Phonetic Alphabet (IPA) as follows:/ˈbæ.kəs ˈnɔːr.məl fɔrm/

Key Takeaways

  1. Backus Normal Form (BNF) is a notation used for formally defining the syntax of programming languages, data formats, or communication protocols.
  2. BNF employs a set of production rules to describe how a language’s elements can be combined, allowing for easier language design and implementation.
  3. BNF is widely utilized in describing the syntax of programming languages, enabling parsers and compilers to interpret and process source code in a standardized manner.

Importance of Backus Normal Form

Backus Normal Form, also known as Backus-Naur Form (BNF), is a significant technology term as it serves as a widely-used notation for defining the syntax of programming languages, communication protocols, and data formats.

Invented by John Backus and Peter Naur in the late 1950s, BNF not only offers a concise and unambiguous description of syntax rules, but it also facilitates the development and understanding of computer languages.

By defining and organizing the production rules that govern the derivation of specific elements, BNF allows programmers, designers, and software tools to effectively represent, parse, and process programming constructs, thus contributing to increased consistency and interoperability across different systems and languages.


Backus Normal Form (BNF), also known as Backus-Naur Form, serves an essential purpose in the world of computer science and programming languages. The primary intention of BNF is to provide a precise, unambiguous, and formal notation for specifying syntax rules, which underpin the construction of various programming languages.

This notation plays a crucial role in defining the valid sequences of symbols a given programming language allows. As such, BNF facilitates communication between language designers and language users by offering a reliable blueprint of the structure on which a programming language is based.

BNF not only plays a key role in the development of programming languages but also has a significant influence on the construction of compilers and interpreters. These essential tools in programming help convert the source code, written in a specific programming language, into target code that can be executed by a computer.

BNF, with its systematic notation, assists compiler and interpreter developers in designing an accurate syntax analyzer that can effectively check a program’s compliance with the given syntax rules. In essence, Backus Normal Form brings clarity and order to the intricate processes of designing, interpreting, and implementing programming languages.

Examples of Backus Normal Form

Backus-Naur Form, or BNF, is a notation used to express context-free grammars that define the structure of programming languages and similar constructs. While BNF itself is not a technology, it plays a vital role in computer science and technology. Here are three real-world examples related to BNF:

Defining Programming Languages: BNF is widely used in specifying the syntax of programming languages, such as Pascal, C, and Java. By presenting the language’s grammar rules and structure in BNF, developers and programmers can easily understand the language’s syntax and create software or tools around it.Example: In the C programming language, an if-statement can be represented in BNF as follows:“`if-statement ::= “if” “(” expression “)” statement [ “else” statement ]“`

Compiler and Interpreter Design: BNF plays a critical role in building compilers and interpreters for programming languages. A compiler is a software that translates a high-level programming language into low-level machine code, while an interpreter translates and executes the code line by line. Using BNF, software developers can create a syntax tree and parse the input source code to convert it into the machine-readable format.Example: The developer of a Python interpreter might use BNF to create a parser that reads Python source code and executes the code as programmed.

Scripting and Markup Languages: BNF is also useful in defining the syntax of scripting and markup languages like XML and JSON. These languages may seem different from programming languages, but they also require well-defined rules for correct interpretation. BNF helps create parsers to validate and process data stored in these formats.Example: JSON (JavaScript Object Notation) can be defined using a BNF notation to help create JSON parsers for various purposes, including data interchange between client and server applications or validating JSON data.

FAQ Section – Backus Normal Form

What is Backus Normal Form?

Backus Normal Form, also known as Backus-Naur Form or BNF, is a notation used to describe the syntax of programming languages. It is a formal system used to represent context-free grammars, making it easier to understand and implement programming languages. It was introduced by John Backus in 1959 and later modified by Peter Naur in 1960.

What is the purpose of Backus Normal Form?

The main purpose of Backus Normal Form is to provide a concise way of defining the syntax of programming languages. With BNF, developers and programmers can precisely define the structure and rules of a language, making it easier to design and implement compilers, interpreters, and other language-processing tools. It also enables easier communication among developers by presenting a clear representation of the language structure.

What is the syntax of Backus Normal Form?

The syntax of Backus Normal Form consists of a set of production rules. Each rule consists of a nonterminal symbol, which represents a syntactic category, followed by the ::= symbol, and a sequence of terminal and nonterminal symbols on the right. The right-hand side represents a possible structure of the language. A simple example of BNF syntax is:

<expression> ::= <term> "+" <expression> | <term>
<term> ::= <factor> "*" <term> | <factor>
<factor> ::= "(" <expression> ")" | <number>
<number> ::= <digit> <number> | <digit>
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

What is the difference between terminal and nonterminal symbols?

Terminal symbols are the basic symbols of a language, which cannot be further divided into simpler components. Nonterminal symbols, on the other hand, are used to represent higher-level syntactic categories and can be further expanded using the production rules. In BNF notation, nonterminal symbols are usually enclosed in angle brackets (< and >), while terminal symbols are written without brackets.

Can Backus Normal Form be used to describe all programming languages?

Backus Normal Form is well-suited for describing the syntax of many programming languages, but it is not suitable for languages with context-sensitive elements. BNF only represents context-free grammars; for context-sensitive languages, different formal systems, such as tree-adjoining grammars or attribute grammars, may be required. Despite this limitation, BNF has been widely used in the design and development of numerous programming languages.

Related Technology Terms


  • Context-free grammars
  • Production rules
  • BNF syntax
  • Recursive descent parser
  • Compiler design


Sources for More Information


About The Authors

The DevX Technology Glossary is reviewed by technology experts and writers from our community. Terms and definitions continue to go under updates to stay relevant and up-to-date. These experts help us maintain the almost 10,000+ technology terms on DevX. Our reviewers have a strong technical background in software development, engineering, and startup businesses. They are experts with real-world experience working in the tech industry and academia.

See our full expert review panel.


About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

Technology Glossary

Table of Contents

More Terms