让我来试着说几句人话...
BNF是John Backus 在20世纪90年代提出的用以简洁描述一种编程语言的语言。
根本构造为:
<non-terminal> ::= <replacement>
non-terminal意为非末行符,就是说我们还没有定义完的工具,还能够继续由右边的replacement,也就是取代物来进一步解释、定义。
举个例子:
在中文语法里,一个句子一般由“主语”、“谓语”和“宾语”构成,主语能够是名词或者代词,谓语一般是动词,宾语能够使描述词,名词或者代词。那么“主语”、“谓语”和“宾语”就长短末行符,因为还能够继续由“名词”、“代词”、“动词”、“描述词”等替代。
例1. <句子> ::= <主语><谓语><宾语>
例2. <主语> ::= <名词>|<代词>
例3. <谓语>::=<动词>
例4. <宾语>::=<描述词>|<名词>|<代词>
例5. <代词>::=<我>
例6. <动词>::=<吃>
例7. <动词>::=<喜好>
例8. <名词>::=<车>
例9. <名词>::=<肉>
如上,在::=右边的就是non-terminal非末行符,右边的就是replacement,能够是一系列的非末行符,如例1中的replacement即是后面例234右边的非末行符,也能够是末行符,如例56789的右边,找不到此外符号来进一步取代。
因而,末行符永久不会呈现在右边。一旦我们看到了末行符,那个描述过程就完毕了。
0