ENBF到JavaCC []和{}之间的区别

时间:2014-04-22 13:40:20

标签: parsing lexer javacc ebnf

我在EBNF中有以下2条生产规则:

<CharLiteral> ::= ' " ' [ <Printable> ] ' " '

<StringLiteral> ::= ' " ' { <Printable> } ' " '

两者有什么区别? []意味着重复1次或多次,{}意味着重复0次或更多次?

1 个答案:

答案 0 :(得分:1)

在EBNF中,[X]表示0或1 X{X}表示0或更多X

在JavaCC中,[X]表示语法制作为0或1 X;在正则表达式制作中,您应该使用(X)?代替。要在JavaCC中表达0或更多X,请使用(X)*