理解 BNF 语法形式的问题

Issues understanding BNF grammar form

我正在学习 BNF 语法是如何工作的,我得到了一些 BNF 语法规则的以下示例。我只是想了解这意味着什么,但我遇到了麻烦:

  <S> ::=  ‘(‘ <A> ‘)’     
  <A> ::=  ‘[‘ <A> ‘]’              
      | <S> ‘{‘ <A> ‘}’
      | a | … | z

我不明白引号中的括号是什么意思。据我所知,这个表达式应该是

S expanded = '(' <A> ')'.
A expanded = ‘[‘ <A> ‘]’              
          or <S> ‘{‘ <A> ‘}’
          or a or … or z

但是我不明白为什么A的展开里面会有A

此处 A 产生式中引号中的括号要求输入中的文字括号。

因此 A 构造的有效示例可以是 [ z ]

关于您的第二点,A 规则是递归的,这意味着尖括号可以无限嵌套在 A 结构中。