¿Cómo leer la gramática del formateo de cadenas de python?

La documentación de python contiene información sobre la gramática de las cadenas de formato , sin embargo, parece que no puedo encontrar información sobre cómo leer la tabla que define la gramática para el campo de reemplazo.

replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" field_name ::= arg_name ("." attribute_name | "[" element_index "]")* arg_name ::= [identifier | integer] attribute_name ::= identifier element_index ::= integer | index_string index_string ::=  + conversion ::= "r" | "s" | "a" format_spec ::=  

También hay una tabla similar en la sección de especificación de formato .

Entiendo partes de la tabla, como el ::= separa el definiendum y el definien, los caracteres entre comillas son literales, y el | significa “o”, pero el rest de la mesa se me escapa.

Este tipo de formato es lo que se conoce como Backus-Naur Form. Más información se encuentra en BNF aquí. Básicamente, BNF es un conjunto de reglas de derivación.

Definiendo los símbolos:

  • Cualquier otra cosa que no sean los meta símbolos :: =, |, y los nombres de clase en cerrado en <,> son símbolos del idioma que se está definiendo (por ejemplo, este ejemplo de Python)
  • Los meta símbolos :: = deben interpretarse como “se define como”
  • El | se utiliza para separar definiciones alternativas y se interpreta como “o”
  • Los meta símbolos <,> son delimitadores que encierran un nombre de clase.

Un poco de disección de este ejemplo para comenzar:

 replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" field_name ::= arg_name ("." attribute_name | "[" element_index "]")* 

replacement_field consta de un nombre de campo opcional, conversion opcional y format_spec opcional. Los corchetes (los [y] ‘s) indican parámetros opcionales .

Si pasa el nombre de campo al campo de replacement_field , consiste en una función arg_name en la que pasa el nombre de attribute_name o el element_index . Nota element_index es obligatorio porque los corchetes están entre comillas y, por lo tanto, escapan del formulario BNF para opcional.