🧩
New! Render PlantUML diagrams directly inside GitHub with our official browser extension — No server. No tokens. No tracking. Zero permissions but clipboard. — Try it out and let us know what you think!

Diagrama de sintaxis

La forma Backus-Naur extendida (EBNF) es un tipo de sintaxis formal utilizada para especificar la estructura de un lenguaje de programación u otro lenguaje formal. Es una extensión de la forma Backus-Naur (BNF), desarrollada originalmente por John Backus y Peter Naur para describir la sintaxis del lenguaje de programación Algol.

EBNF añade varios metasímbolos adicionales a los originales de BNF, lo que permite una especificación más concisa y legible de la sintaxis de un lenguaje. Se utiliza habitualmente en la especificación de lenguajes de programación y, en ocasiones, para describir la sintaxis de otros tipos de lenguajes formales, como los lenguajes de consulta de bases de datos o los lenguajes de marcado.

En PlantUML se ha introducido un soporte básico para EBNF.

*[Ref. [QA-16529](https://forum.plantuml.net/16529/could-we-add-syntax-diagrams)]*
WARNING
 This translation need to be updated. 
WARNING

Minimal binary diagram

All EBNF Elements

EBNF elements handled by PlantUML are described below.

Special sequence management with special-sequence-symbol "?"

You can manage special sequence with special-sequence-symbol "?".

[Ref. QA-16781]

Full repetition management with repetition-symbol "*"

You can manage repetition with repetition-symbol "*".

[Ref. QA-16750]

Drawing mode

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 on Elements

Notes may be added to elements of your diagram by using EBNF comment tags.

Using (global) style

Without style (by default)

With style

You can use style to change rendering of elements.

[Ref. QA-16529]

Example of LISP Grammar

LISP Grammar with PlantUML.

[Ref. ]

EBNF of PlantUMLs EBNF Grammar

EBNF allows for self description, so here it is!

Java Language Specification

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

Remaining defects

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]