BNF范式(巴科斯范式)到底是什么?

12分钟前阅读1回复0
zaibaike
zaibaike
  • 管理员
  • 注册排名1
  • 经验值166425
  • 级别管理员
  • 主题33285
  • 回复0
楼主

让我来试着说几句人话...

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
回帖 返回金融财经

BNF范式(巴科斯范式)到底是什么? 期待您的回复!

取消