# 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 'Foo' Name.Class ';' Punctuation '\n' Text 'endclass' Keyword.Declaration '\n' Text '\n' Text 'class' Keyword.Declaration ' ' Text 'Bar' Name.Class ';' Punctuation '\n' Text 'endclass' Keyword.Declaration ' ' Text ':' Punctuation ' ' Text 'Bar' Name.Class '\n' Text '\n' Text 'class' Keyword.Declaration ' ' Text 'Fiz' Name.Class ' ' Text 'extends' Keyword.Declaration ' ' Text 'Buz' Name.Class ';' Punctuation '\n' Text 'endclass' Keyword.Declaration ' ' Text ':' Punctuation ' ' Text 'Fiz' Name.Class '\n' Text '\n' Text 'class' Keyword.Declaration ' ' Text 'Free' Name.Class ' ' Text '#' Punctuation '(' Punctuation 'parameter' Keyword ' ' Text 'type' Keyword.Type ' ' Text 'T' Name ' ' Text '=' Operator ' ' Text 'byte' Keyword.Type ')' Punctuation ' ' Text 'extends' Keyword.Declaration ' ' Text 'Beer' Name.Class ' ' Text '#' Punctuation '(' Punctuation 'T' Name ')' Punctuation ';' Punctuation '\n' Text 'endclass' Keyword.Declaration ' ' Text ':' Punctuation ' ' Text 'Free' Name.Class '\n' Text