Diagram(
Stack(
Sequence(
Choice(1, NonTerminal('whitespace'), Skip()),
Choice(2,
Terminal('V'),
Terminal('v'),
Skip(),
),
NonTerminal('major'),
Optional(
Sequence(
Terminal('.'),
NonTerminal('minor'),
Optional(
Sequence(
Terminal('.'),
NonTerminal('patch')
)
)
)
),
),
Optional(
Sequence(
OneOrMore(
Terminal('.'),
NonTerminal('number'),
),
Comment("Parses as build identifier"),
),
'skip'
),
Choice(0,
Sequence(
Choice(1,
Skip(),
Sequence(
Choice(0,
Terminal('-'),
Terminal('.'),
),
OneOrMore(
NonTerminal('pre-release'),
Choice(0,
Terminal('.'),
Terminal('-'),
)
),
),
),
Choice(1,
Skip(),
Sequence(
Terminal('+'),
OneOrMore(
NonTerminal('build'),
Choice(0,
Terminal('.'),
Terminal('-'),
)
),
),
)
),
Sequence(
Choice(1,
Terminal('-'),
Terminal('.'),
Terminal('+'),
),
Choice(1,
Terminal('Final'),
Terminal('Release'),
Terminal('r'),
),
Comment("Parses as build identifier"),
),
),
Choice(1, NonTerminal('whitespace'), Skip()),
),
)