1219820Sjeffclass Comment<bit abstract = 0> {
2219820Sjeff  bit Abstract = abstract;
3219820Sjeff}
4219820Sjeff
5270710Shselaskyclass DComment<Comment base, bit abstract = 0> : Comment<abstract> {
6219820Sjeff  Comment Base = base;
7219820Sjeff}
8219820Sjeff
9219820Sjeffdef InlineContentComment : Comment<1>;
10219820Sjeff  def TextComment : DComment<InlineContentComment>;
11219820Sjeff  def InlineCommandComment : DComment<InlineContentComment>;
12219820Sjeff  def HTMLTagComment : DComment<InlineContentComment, 1>;
13219820Sjeff    def HTMLStartTagComment : DComment<HTMLTagComment>;
14219820Sjeff    def HTMLEndTagComment : DComment<HTMLTagComment>;
15219820Sjeff
16219820Sjeffdef BlockContentComment : Comment<1>;
17219820Sjeff  def ParagraphComment : DComment<BlockContentComment>;
18219820Sjeff  def BlockCommandComment : DComment<BlockContentComment>;
19219820Sjeff    def ParamCommandComment : DComment<BlockCommandComment>;
20219820Sjeff    def TParamCommandComment : DComment<BlockCommandComment>;
21219820Sjeff    def VerbatimBlockComment : DComment<BlockCommandComment>;
22219820Sjeff    def VerbatimLineComment : DComment<BlockCommandComment>;
23219820Sjeff
24219820Sjeffdef VerbatimBlockLineComment : Comment;
25219820Sjeff
26219820Sjeffdef FullComment : Comment;
27219820Sjeff
28289644Shselasky