La forme Backus-Naur étendue (EBNF) est un type de syntaxe formelle utilisée pour spécifier la structure d'un langage de programmation ou d'un autre langage formel. Il s'agit d'une extension de la forme Backus-Naur (BNF), qui a été développée à l'origine par John Backus et Peter Naur pour décrire la syntaxe du langage de programmation Algol.
L'EBNF ajoute plusieurs métasymboles supplémentaires aux métasymboles BNF originaux, ce qui permet une spécification plus concise et plus lisible de la syntaxe d'un langage. Elle est couramment utilisée dans la spécification des langages de programmation, et est aussi parfois utilisée pour décrire la syntaxe d'autres types de langages formels, tels que les langages d'interrogation de bases de données ou les langages de balisage.
Un support de base pour EBNF a été introduit dans PlantUML.
[Réf. QA-16529]
EBNF elements handled by PlantUML are described below.
You can manage special sequence with special-sequence-symbol "?".
[Ref. QA-16781]
You can manage repetition with repetition-symbol "*".
[Ref. QA-16750]
Before version V1.2025.1, you can choice the drawing mode, and having a compacted mode by using !pragma compact command.
Expanded mode (by default, and the only one from V1.2025.1)
Compacted mode (only available before V1.2025.1)
[Ref. QA-16692, QA-16529]
[End of the compacted mode: GH-1585]
Notes may be added to elements of your diagram by using EBNF comment tags.
Without style (by default)
With style
You can use style to change rendering of elements.
[Ref. QA-16529]
LISP Grammar with PlantUML.
[Ref. ]
EBNF allows for self description, so here it is!
A real world example of a detailed programming language.
Packages and Modules
Lexical Structure
Types, Values, and Variables
Names
Classes
Interfaces
Arrays
Blocks, Statements, and Patterns
Could you put 'arrow head' on all rerouted lines?
Fixed by EBNF more arrow head on V1.2024.8
Order issue
[Ref. QA-17090, fixed by EBNF concatenation order on V1.2024.8]
Allow accentuated or Unicode char on EBNF meta-identifier or rule name.
[Ref. QA-17145 , fixed by EBNF better unicode support on V1.2024.8]
Allow full restriction management with except-symbol "-"
[Ref. QA-16735]