将EBNF具体转换为BNF

  • 本文关键字:BNF 转换 EBNF bnf ebnf
  • 更新时间 :
  • 英文 :

<A> ::= <B> x {<B> <D>} y <B>
<B> ::= <C> (w|z) <C> <D>
<C> := m [n] <D> <E> 
<D> := q | null
<E> := p | null

您将如何将这个EBNF转换为BNF?

不同的人对 EBNF 使用不同的语法,我不确定你使用的是哪一种。您在 EBNF (ISO/IEC 14977: 1996(E)) 中的语法如下所示:

A = B, "x", {B, D}, "y", B;
B = C, ("w" | "z"), C, D;
C = "m", ["n"], D, E; 
D = ["q"];
E = ["p"];

假设您使用 null 作为空字符串。请注意,这可以进一步简化。

必须添加一些作品才能将其转换为 BNF:

  • 可以通过插入生产P := empty | expr P来替换{ expr },其中empty表示空字符串。

  • [ expr ]可以通过插入P := empty | expr来替换。

  • 任何表达式( expr )都可以通过添加新作品来替换 P := expr .

所以像这样:

A -> B x F y B
F -> empty | B D F
B -> C G C D
G -> w | z
C -> m H D E
H -> empty | n
D -> q | empty
E -> p | empty

同样,假设null是指空字符串。

最新更新