 form of a dialect
tag, a specially formatted comment that specifies a dialect option.

Dialect Tag EBNF::

   dialectTag :
       OpeningCommentDelim Prefix dialectOption ClosingCommentDelim ;

   dialectOption :
       'm2pim' | 'm2iso' | 'm2r10' | 'objm2' |
       'm2iso+aglet' | 'm2pim+gm2' | 'm2iso+p1' | 'm2iso+xds' ;

   Prefix : '!' ;

   OpeningCommentDelim : '(*' ;

   ClosingCommentDelim : '*)' ;

No whitespace is permitted between the tokens of a dialect tag.

In the event that a source file contains multiple dialect tags, the first
tag that contains a valid dialect option will be used and any subsequent
dialect tags will be ignored.  Ideally, a dialect tag should be placed
at the beginning of a source file.

An embedded dialect tag overrides a dialect option set via command line.

Examples:

``(*!m2r10*) DEFINITION MODULE Foobar; ...``
    Use Modula2 R10 dialect to render this source file.
``(*!m2pim+gm2*) DEFINITION MODULE Bazbam; ...``
    Use PIM dialect with GNU extensions to render this source file.


Algol Publication Mode:

In Algol publication mode, source text is rendered for publication of
algorithms in scientific papers and academic texts, following the format
of the Revised Algol-60 Language Report.  It is activated by passing
one of two corresponding styles as an option:

`algol`
    render reserved words lowercase underline boldface
    and builtins lowercase boldface italic
`algol_nu`
    render reserved words lowercase boldface (no underlining)
    and builtins lowercase boldface italic

The lexer automatically performs the required lowercase conversion when
this mode is activated.

Example:

``$ pygmentize -O full,style=algol -f latex -o /path/to/output /path/to/input``
    Render input file in Algol publication mode to LaTeX output.


Rendering Mode of First Class ADT Identifiers:

The rendering of standard library first class ADT identifiers is controlled
by option flag "treat_stdlib_adts_as_builtins".

When this option is turned on, standard library ADT identifiers are rendered
as builtins.  When it is turned off, they are rendered as ordinary library
identifiers.

`treat_stdlib_adts_as_builtins` (default: On)

The option is useful for dialects that support ADTs as first class objects
and provide ADTs in the standard library that would otherwise be built-in.

At present, only Modula-2 R10 supports library ADTs as first class objects
and therefore, no ADT identifiers are defined for any other dialects.

Example:

``$ pygmentize -O full,dialect=m2r10,treat_stdlib_adts_as_builtins=Off ...``
    Render standard library ADTs as ordinary library types.

.. versionchanged:: 2.1
   Added multi-dialect support.
zModula-2z