Reference for BNF Notation to Read the Official Python Documentation
2 min readAug 26, 2022
The aim of this pageđź“ť is to share a reference for BNF, which is a notation for description of (not only/usually) language grammars and syntaxes. My problem was that I could not understand the basic description of a function in Python official documentation going
format(value[, format_spec])
— https://docs.python.org/3/library/functions.html?highlight=format#format
1. HISTORY
- See the 2006 conversation with Grady Booth (designer of UML) in the Oral History of John Backus — YouTube
- Backus (who also made Fortran!) paradigm (BNF: abbreviation for Backus-Naur Form) is the first formal notation introduced by John Backus and Peter Naur to describe the syntax of a given language (first used to describe the ALGOL 60 programming language).
- To be precise, Backus introduced most of the BNF symbols in a report presented at the UNESCO ( UNESCO ) conference on ALGOL 58.
- Although no one has read this report, when Peter Naur read this report, he found that Backus’s interpretation of ALGOL 58 is somewhat different from his interpretation, which surprised him.
- All the participants who first designed ALGOL began to discover some weaknesses in his interpretation, so he decided that future versions of ALGOL should be described in a similar format so that all participants understand what they are agreeing on.
- He made a few modifications to make it almost universal.
- At the meeting to design ALGOL 60, he drafted his own BNF for ALGOL 60.
- It depends on how you think who invented BNF, or think it was invented by Backus in 1959, or think it was invented by Naur in 1960.
- For more details on the history of programming languages ​​during that period, see the August 1978, “Communications of the ACM”, Volume 21, Issue 8.
- The article in which Backus won the Turing Award.
- This note is Suggested by William B. Clodius from the laboratory of Los Alamos Natl
- Now, almost every author of a new programming language book uses the Backus paradigm to define the grammatical rules of the programming language.