用BNF写句子的语法是什么?它的结构或正确性并不重要。我只在乎它是否有一个或多个单词,这些单词可能用空格分隔,也可能不用空格分隔。
用BNF写句子的语法是什么?
Backus Naur表单(BNF(不是像JSON或PDF那样的数据格式,它是对定义给定格式的语法的描述。你不会用BNF写一个句子,但你可以用BNF来描述句子是什么。这种描述可能会列举出一个句子中可以接受的字符,告诉你单词是由非空白字符组成的,句子是由空格分隔的单词序列,并以一个终止句子的标点符号结尾。当然,在像英语这样的自然语言中,有很多关于有效句子的规则,所以如果你走这条路,你可能还需要为subject-phrase
、verb-phrase
、object-phrase
等创建实体。
用BNF表达的完整英语语法肯定会非常复杂。BNF更适合于计算机语言和格式的语法。例如,您可能有一个JSON的BNF描述,或者C或Java中允许的语法。
我只关心它是否有1个或多个单词,这些单词可能用空格分隔,也可能不用空格分隔。
BNF的规则在维基百科页面和其他地方都有。同样,你不会用BNF写一个特定的句子,但你会说出一个句子允许的内容。所以你可能有这样的规则:
<char> ::= "A" | "B" | "C" | "D" ...
<word> ::= <char>*
<terminator> ::= "." | "!" | "?"
<phrase> ::= <word> | <word> " " <phrase>
<sentence> ::= <phrase> <terminator>
每个规则都是由其他规则构建的,或者有时是递归构建的。。。例如,phrase
的规则说短语是一个单词或一个单词加一个空格加一个短语,所以你可以有任意数量的空格分隔的单词。