J'ai un doute syntaxique concernant une règle de grammaire de programme Java mentionnée dans le manuel de spécification Java d'Oracle. Voici une approximation de cette règle, dans la mesure où les restrictions HTML de SO le permettent.
ArrayInitializer: { [VariableInitializerList] [,] } VariableInitializerList: VariableInitializer {, VariableInitializer}
Cela est donné dans la section 2.4 du manuel Java. [x]
désigne zéro ou une occurrence de x
et {x}
désigne zéro ou plusieurs.
Cependant, j'ai les doutes suivants :
- Pour le non-terminal ArrayInitializer, la première accolade
{
désigne une accolade terminale ou le sens syntaxique que j'ai mentionné ci-dessus. - Aussi, pour le non-terminal VariableInitializerList, je sais que
_{_, _VariableInitializer}_
signifie quelque chose d'équivalent à l'expression régulière(a,b)*
, mais ce type de grammaire acceptera également une autre chaîne qui ne correspond pas réellement au critère, n'est-ce pas ? - Je veux aussi confirmer si les crochets dans la première production désignent l'expression régulière ou des terminaux simples.
Je trouve cette spécification de grammaire confuse. Pouvez-vous m'aider à la comprendre ?