我正在学习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内部。
答案 0 :(得分:1)
此处A
生产中引号中的括号调用输入中的文字括号。
因此,A
构造的有效示例可能是[ z ]
。
至于你的第二点,A
规则是递归的,这意味着尖括号可以无限嵌套在A
结构中。