0
<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轉換爲BNF的具體轉換
<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轉換爲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:
{ expr }
可以通過插入一個生產P := empty | expr P
其中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
你指的是空字符串。