Generated by GPT-5-mini| ISO/IEC 14977 | |
|---|---|
| Title | ISO/IEC 14977 |
| Othernames | Extended Backus–Naur Form |
| Status | Published |
| Year | 1996 |
| Organization | ISO, IEC, JTC 1, SC 22, WG 9 |
ISO/IEC 14977 is a standard specifying a metalanguage for describing the syntax of formal languages, commonly known as Extended Backus–Naur Form. The standard is used across industry and academia for defining programming languages, protocols, and data formats, and it has influenced numerous specifications and tools in computing and standards communities.
ISO/IEC 14977 provides a formal syntax notation that is designed to describe grammars used in ALGOL 60, ALGOL 68, Ada, C, C++, Fortran, Pascal, Haskell, Lisp, Smalltalk, Java, JavaScript, Python, Perl, Ruby, PHP, SQL, HTML5, XML, JSON, SMTP, HTTP/1.1, TLS, SSH, and other protocol and language specifications. The notation refines Backus–Naur Form developed by John Backus, Peter Naur, Algol 60 Committee, and later extensions from Niklaus Wirth and others, and the standard is maintained jointly by International Organization for Standardization, International Electrotechnical Commission, ISO/IEC JTC 1, ISO/IEC JTC 1/SC 22, and working groups including WG 9. ISO/IEC 14977 aims to balance human readability with formal precision for implementers and standardizers such as IETF, W3C, and ECMA International.
The lineage of the notation traces to early work on algebraic and language definitions involving figures like John Backus and Peter Naur and committees including the Algol 60 Committee and conferences such as IFIP. Subsequent influence came from Niklaus Wirth's presentations at venues like ACM SIGPLAN and standards activities at ISO, IEC, ANSI, IEEE, and ECMA International. Formal standardization culminated in publication by International Organization for Standardization and International Electrotechnical Commission under their joint technical committee ISO/IEC JTC 1 and subcommittee ISO/IEC JTC 1/SC 22. The standard has been referenced in language specifications ratified by bodies such as ECMA-262, IETF RFC 2616, and national standards offices including the British Standards Institution and DIN.
The notation defines syntactic categories using rules combining terminals and nonterminals with constructs originally motivated by proposals from John Backus, Peter Naur, and practitioners at Bell Labs, IBM, and DEC. ISO/IEC 14977 specifies concatenation, alternation, optionality, repetition, grouping, and terminal quoting, with explicit productions and meta-identifiers used by standards organizations like W3C and IETF when authoring recommendations. The grammar form supports lexical terminal definitions compatible with scanner generator ecosystems such as lex and Flex and parser generator frameworks like Yacc, Bison, ANTLR, Menhir, LR parser, and LALR parser. The standard distinguishes case sensitivity and the representation of special characters, a concern also addressed by language committees for Ada, C++, and Fortran.
ISO/IEC 14977 focuses primarily on syntactic form rather than denotational semantics, a separation echoed in the work of Peter Landin, Christopher Strachey, and Tony Hoare on formal semantics. Its constructs express context-free grammars and enable the definition of production rules, recursion, and precedence hints that parser frameworks like ANTLR and Yacc transform into parsing tables used by compilers and interpreters in projects at GNU Project, Apache Software Foundation, and Mozilla Foundation. While not prescribing semantic actions, the notation is often paired with semantic frameworks such as Denotational semantics, Operational semantics, and Axiomatic semantics developed in academic settings like MIT, Stanford University, University of Cambridge, and University of Oxford.
Many tools implement or accept grammar in the standard's style, including parser generators and validators from organizations and projects such as GNU Project, ANTLR, Bison, Yacc, JavaCC, Menhir, Ragel, PEG.js, Irony, and linters used by Microsoft and Google. Integrated development environments by vendors like JetBrains, Eclipse Foundation, Microsoft Visual Studio, and NetBeans incorporate grammar-based tooling that leverages ISO/IEC 14977-like notations for syntax highlighting, code folding, and refactoring. Documentation and conversion utilities from W3C and IETF ecosystems translate between the standard's notation and other grammars used in RFCs and W3C Recommendations.
Standards bodies and language designers use the notation to specify programming languages, data formats, and protocols encountered in projects at W3C, IETF, ECMA International, ISO, IEEE, and OASIS. Example domains include the syntax of HTTP/1.1, SMTP, IMAP, HTML5, XML Schema, JSON Schema, database languages like SQL, and configuration formats used by Docker, Kubernetes, and OpenStack. Educational courses at institutions such as MIT, Carnegie Mellon University, ETH Zurich, École Polytechnique Fédérale de Lausanne, and University of California, Berkeley use the notation to teach compiler construction and formal language theory.
Critics in academic and standards communities including contributors from ACM, IEEE, IETF, and various university research groups note that ISO/IEC 14977 is limited to context-free syntactic description and lacks built-in semantic action mechanisms found in tools like ANTLR or parsing expression grammars (PEGs) originating from research at institutions such as Charles University and University of Tokyo. The notation's ambiguity in representing lexical vs. syntactic concerns has prompted alternative approaches in specifications by W3C and IETF and motivated the use of supplementary formalisms like BNF variants, PEG, and formal meta-languages used in projects at Google and Facebook. Additionally, interoperability concerns among vendors such as IBM, Microsoft, and Oracle Corporation have driven tooling ecosystems to extend or adapt the standard.
Category:Standards