<?SBNF-www.vishia.de version="1.0" encoding="iso-8859-1" ?>
$xmlns:gen="http://www.vishia.de/2006/DocuGenCtrl".
$xmlns:xhtml="http://www.w3.org/1999/xhtml".

GenCtrl::=<?GenCtrl>
[\<\?DocuGenCtrl-www\.vishia\.de {version=<""?@version-GenDocuCtr>|encoding=<""?@encoding>} \?\>]
genCtrl: <*\ ;?@file> ;
[ importXsl ( {<import> ? , } ) ; ]
[{ prepXml: <prepXml> }]
{ <document> }
[ HyperlinkAssociation <HyperlinkAssociations> ]
\e.


import::=[<*:\ \r\n,)?@dir>:]<*|.xsl|.xslp?@href>[<?@type>\.xslp|\.xsl].

prepXml::=
[ \{  { <*\ \r\n-,?!prepInputfile> ? ,} \}  ##more as one inputfile in {input, input, ...}
| <*\ \r\n-?!prepInputfile>                 ##NOTE: - as terminate char is the first of followed "-> symbol"
]
 -\> <$?@translator> [-\> <*;\ \r\n-?@outputfile>] ; .

prepInputfile::=<prepInputFilePath?input>.

prepInputFilePath::=[<+<</:\\?@path>]<*?@file>.

document::=Document <""?@title> ident = <$?@ident>  ##the ident is the identification of the document for generating
  process.
\{
[{ input: <input> ;                                 ##The input files for generating the XhtmlPre, possible
  preprocessed, see <prepXml>
 | inputCrossRef: <input?inputCrossRef> ;
 | inset: <inset> ;                                 ##association between inset proxy label and associated topic
}]
[xslCrossRef: <import?xslCrossRef> ; ]
{ chapter <chapter>                                   ##at least one, or more toplevel chapters
| topic( <topic> );
}
\}
.


input::=<*;\ \r\n-?@inputfile> [ -\> <$?@translator> [ -\> <*;\ \r\n-?@outputfile>]].

##association between inset label and a topic. Just now only topic association is supported.
##in the future more as that is able, hence the <topic> is produced.
inset::=<*\ =?@label> = [<?topic> topic ( <*)\ ?@select> )| none].


chapter::= <""?title> [({ id=<*,) ?@id> ?, })]  ##the id produce a hyperlink anchor in the output document for this
  chapter.
\{ [<content?>]
   [{ chapter <chapter> }]
\}.




content::=
{ p <""?p>
   | inset <inset>
   | topic( <topic> );
   |<?file> file( <""?@path> [, <""?@from> \.\. [<""?@to> ]]);  ##input from a file, it is able to select a part from ..
     to specified text, exclusive this labels. 
   | picture( <picture> );
   | umlPkg ( <umlPkg> );
   | umlClass ( <umlClass> );
   | umlIfc ( <umlIfc> );
   | umlComment ( <umlComment> );
   | umlSQD ( <umlSQD> );
   | umlStateD ( <umlStateD> );
   | umlStateReport ( <umlStateReport> );
   | CLASS_C(<*)?CLASS_C/@select>);
   | dataStruct ( <umlClass> );
   | headerCClass(<*)?CLASS_C/@select>);
   | DEFINE_C(<*)?DEFINE_C/@select>);
   | crossRef( <crossRef> );
   | call <call> ;
   }
.

call::=<$?@name> ( <*,)\ ?@select> ).


topic::=<*,)\ ?@select>
[,{
  divStyle=[<$?@divStyle>|<""?@divStyle>]
| pStyle=[<$?@pStyle>|<""?@pStyle>]
| ulStyle=[<$?@ulStyle>|<""?@ulStyle>]
| olStyle=[<$?@olStyle>|<""?@olStyle>]
| dlStyle=[<$?@dlStyle>|<""?@dlStyle>]
| tableStyle=[<$?@tableStyle>|<""?@tableStyle>]
| style:<styleTransform>
? , }].



picture::=<""?@title> [: <""?@file>]
[ , {
  imgMap=[<$?@imgMap>|<""?@imgMap>]
? , }].



styleTransform::=[<$?@srcStyle>|<""?@srcStyle>]-\>[<$?@dstStyle>|<""?@dstStyle>].

umlClass::=<*,)\ ?@select>
[,{
  title=<""?@title>            ##if a title is given, the umlClass will be placed in an own chapter with this title.
| methods=[<?@methods>all|public-only|withDescription-only|no|body]
| attributes=[<?@attributes>all|public-only|withDescription-only|bytes|no]
| associations=[<?@associations>all|public-only|withDescription-only|no]
| header<?@header>
? , }].


umlIfc::=<*,)\ ?@select> [, title=<""?@title> ].

umlPkg::=<*,)\ ?@select>.



umlComment::=<*,)\ ?@select>.


umlSQD::=<*,)\ ?@select>
.


umlStateD::=<*,)\ ?@select>
.

umlStateReport::=<*,)\ ?@select>
.


crossRef::=<*,)\ ?@content>.



HyperlinkAssociations::= \{ {<?Association/> <*\ =?@href> = <""?@dst> [: <$?@content>] ; } \}.