让我来试着说几句人话...
BNF是John Backus 在20世纪90年代提出的用以简洁描述一种编程语言的语言。
基本结构为:
::=
non-terminal意为非终止符,就是说我们还没有定义完的东西,还可以继续由右边的replacement,也就是代替物来进一步解释、定义。
举个例子:
在中文语法里,一个句子一般由“主语”、“谓语”和“宾语”组成,主语可以是名词或者代词,谓语一般是动词,宾语可以使形容词,名词或者代词。那么“主语”、“谓语”和“宾语”就是非终止符,因为还可以继续由“名词”、“代词”、“动词”、“形容词”等替代。
例1. ::=
例2. ::= |
例3. ::=
例4. ::=||
例5. ::=
例6. ::=
例7. ::=
例8. ::=
例9. ::=
如上,在::=左边的就是non-terminal非终止符,右边的就是replacement,可以是一系列的非终止符,如例1中的replacement便是后面例234左边的非终止符,也可以是终止符,如例56789的右边,找不到别的符号来进一步代替。
因此,终止符永远不会出现在左边。一旦我们看到了终止符,这个描述过程就结束了。