Formal syntax in MDN doc on grid-template -rows

Do anyone understand the formal syntax in the MDN documentation of grid-template-rows? I don’t understand the question mark (?), the + sign, pipe, the < > , and the square bracket [ ]. Are those supposed to be part of the syntax? Do they mean something or just there for decoration? Why do some words written with them and sometimes not? Are the words required or optional? How are the formal syntax tied to the Syntax section? I just don’t understand the formal syntax section, in general. There isn’t an explanation. Is the formal syntax written as a further explanation because I feel like I am reading hieroglyphic.

Can you show an example and share a link to what you’re talking about?

You can also try searching for other resources that might explain it in an easier way to understand.

https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows
Formal syntax
grid-template-rows = 
  none                       |
  <track-list>               |
  <auto-track-list>          |
  subgrid <line-name-list>?  

<track-list> = 
  [ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?  

<auto-track-list> = 
  [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>? <auto-repeat> [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?  

<line-name-list> = 
  [ <line-names> | <name-repeat> ]+  

<line-names> = 
  '[' <custom-ident>* ']'  

<track-size> = 
  <track-breadth>                                   |
  minmax( <inflexible-breadth> , <track-breadth> )  |
  fit-content( <length-percentage [0,∞]> )          

<track-repeat> = 
  repeat( [ <integer [1,∞]> ] , [ <line-names>? <track-size> ]+ <line-names>? )  

<fixed-size> = 
  <fixed-breadth>                                   |
  minmax( <fixed-breadth> , <track-breadth> )       |
  minmax( <inflexible-breadth> , <fixed-breadth> )  

<fixed-repeat> = 
  repeat( [ <integer [1,∞]> ] , [ <line-names>? <fixed-size> ]+ <line-names>? )  

<auto-repeat> = 
  repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )  

<name-repeat> = 
  repeat( [ <integer [1,∞]> | auto-fill ] , <line-names>+ )  

<track-breadth> = 
  <length-percentage [0,∞]>  |
  <flex [0,∞]>               |
  min-content                |
  max-content                |
  auto                       

<inflexible-breadth> = 
  <length-percentage [0,∞]>  |
  min-content                |
  max-content                |
  auto                       

<length-percentage> = 
  <length>      |
  <percentage>  

<fixed-breadth> = 
  <length-percentage [0,∞]>  

this is a formal way to indicate the possibilities of what to give to the property.
It is easier to look at the various examples

it’s documented here: Value definition syntax - CSS | MDN