About:    Quake Map Syntax checker - v. 0.5, 96.09.08.

Author:   Mads Bondo Dydensborg - madsdyd@diku.dk

Syntax:   Syntax checks a Map file after a simplified set of rules:

    Map             ->   Entity Entity_List 
    Entity_List     ->   Entity Entity_List | <e> 
    Entity          ->   { Key_Value_List Brush_List } 
    Key_Value_List  ->   Key_Value Key_Value_List | <e> 
    Key             ->   "<any>" 
    Value           ->   "<any>" 
    Brush_List      ->   Brush Brush_List | <e> 
    Brush           ->   { plane plane plane plane plane_list } 
    Plane_List      ->   Plane Plane_List | <e> 
    Plane           ->   Point Point Point Texture <num> <num> <num> Flag Flag 
    Point           ->   ( <num> <num> <num> ) 
    Texture         ->   <anynw> 
    Flag            ->   <anynw>

    <e>             is nothing
    <any>           is anything 
    <anynw>         is anything that does not contain whitespace 
    <num>           is an integer (qbsp accepts reals though)

Comments: Anything starting with // to an EOL marker is considered a comment.

Strict  : Qbsp accepts a slightly more loose syntax then the above;
          Sometimes Reals can be used instead of Integers. Keys and Brushes
          can be mixed more freely. One can discus if the four Plane in a brush
          is a syntax requirement.

Semantic: If /T is not specified, the program will extract texture names from
          wad files specified in "wad" keys in the order it meets them, and  
          check Texture definitions against this information. A warning will 
          be issued if a Texture is not found
          For each Entity, it is checked that a "classname" key is present.
          if not, a warning will be issued.

Recovery: The program will try and recover from all syntax errors. Recovery
          will often fail when meeting errors in keys, or non-closed brushes
          in non-closed entities. The program will assume a recovery fail
          initiated loop after 20 errors and stop.

Wadfiles: Wadfiles are assumed to be internally OK. This can cause some runtime
          errors, if the wadfiles are broken. Try running with /T. If this
          removes the runtime errors, the wadfiles internal dir probably is
          incorrect.

Source:   If you are interessted in the source code to this program, then
          contact me on the above adress.

Returns:  The program will return the following errorlevel:
          0 - Normal termination.
          1 - Warnings were issued
          2 - Errors were found
          3 - Error in program options (Illegal option combination)
