2013-10-07 63 views

回答

0

不同的人对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你指的是空字符串。