
Diagram(
Stack(
Sequence(
Terminal('$'),
Optional(NonTerminal('blanks')),
Terminal('MESSAGE'),
NonTerminal('name'),
Optional(Sequence(Terminal(':'), OneOrMore(NonTerminal('artefact_name')))),
NonTerminal('end_of_line')),
Sequence(
ZeroOrMore(Choice(0, NonTerminal('parameter'), NonTerminal('empty_line'))),
ZeroOrMore(Choice(0, NonTerminal('text_line'), NonTerminal('language_header'),
NonTerminal('empty_line')))))
)