我在EBNF中有以下2条生产规则:
<CharLiteral> ::= ' " ' [ <Printable> ] ' " '
和
<StringLiteral> ::= ' " ' { <Printable> } ' " '
两者有什么区别? []意味着重复1次或多次,{}意味着重复0次或更多次?
答案 0 :(得分:1)
在EBNF中,[X]
表示0或1 X
,{X}
表示0或更多X
。
在JavaCC中,[X]
表示语法制作为0或1 X
;在正则表达式制作中,您应该使用(X)?
代替。要在JavaCC中表达0或更多X
,请使用(X)*
。