%% There are two kind of documents:
%%  1) Document with PHP possible surrounded by HTML
%%     This document has an optional end-tag. The reason why
%%     we prefer a seperate consturctor with different amount of childeren is
%%     because optional end-tag with optional InlineHtml does not make any
%%     sense.
%%  2) Document without PHP. Only InlineHTML or InlineEcho's
%%     This document is a TemplateDocument because it is 
%%     Likely to be a webpage with only some variables injected
%%     in it.
%% @author Eric Bouwers
module languages/php/common/Main
  sorts Document InlineHTML PHPOpenTag TopStatement PHPCloseTag

  <InlineHTML-CF> <PHPOpenTag-CF> <LAYOUT?-CF> <TopStatement*-CF> <LAYOUT?-CF> <PHPCloseTag-CF> <InlineHTML-CF>
    -> Document {cons("Document")}

  <InlineHTML-CF> <PHPOpenTag-CF> <LAYOUT?-CF> <TopStatement*-CF> <LAYOUT?-CF>
    -> Document {cons("Document")}

    -> Document {cons("TemplateDocument")}