# Most of the interesting types of class declarations ---input--- class Foo; endclass class Bar; endclass : Bar class Fiz extends Buz; endclass : Fiz class Free #(parameter type T = byte) extends Beer #(T); endclass : Free ---tokens--- 'class' Keyword.Declaration ' ' Text.Whitespace 'Foo' Name.Class ';' Punctuation '\n' Text.Whitespace 'endclass' Keyword.Declaration '\n\n' Text.Whitespace 'class' Keyword.Declaration ' ' Text.Whitespace 'Bar' Name.Class ';' Punctuation '\n' Text.Whitespace 'endclass' Keyword.Declaration ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Bar' Name.Class '\n\n' Text.Whitespace 'class' Keyword.Declaration ' ' Text.Whitespace 'Fiz' Name.Class ' ' Text.Whitespace 'extends' Keyword.Declaration ' ' Text.Whitespace 'Buz' Name.Class ';' Punctuation '\n' Text.Whitespace 'endclass' Keyword.Declaration ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Fiz' Name.Class '\n\n' Text.Whitespace 'class' Keyword.Declaration ' ' Text.Whitespace 'Free' Name.Class ' ' Text.Whitespace '#' Punctuation '(' Punctuation 'parameter' Keyword ' ' Text.Whitespace 'type' Keyword.Type ' ' Text.Whitespace 'T' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'byte' Keyword.Type ')' Punctuation ' ' Text.Whitespace 'extends' Keyword.Declaration ' ' Text.Whitespace 'Beer' Name.Class ' ' Text.Whitespace '#' Punctuation '(' Punctuation 'T' Name ')' Punctuation ';' Punctuation '\n' Text.Whitespace 'endclass' Keyword.Declaration ' ' Text.Whitespace ':' Punctuation ' ' Text.Whitespace 'Free' Name.Class '\n' Text.Whitespace