Syntax van een dhp-bestand

De syntax van de files die door de Meteo en Tijd Server verwerkt worden is hieronder weergegeven. Dit betreft hoofdzakelijk een beschrijving van de DHP syntax, omdat 'gewone' tekstbestanden geen specifieke structuur hebben. Sommige woorden geven meer informatie als je het met de muis aanwijst. Onderstreepte woorden links van de '::=' wijzen door naar een uitgebreidere beschrijving.
file		  ::= <dhp_file> | <text_file>

next_casedef	  ::=  [ "," <casedef> ]
assert		  ::= "ASSERT " <nr_variables> ":" <heading> [ "#" <variable_descr> ]
case_dst	  ::= <format_string> | string
case_src	  ::= [ <casecomparison> ] string
casecomparison	  ::= "<" | ">"
casedef		  ::= <case_src> "=" <case_dst>
comment		  ::= "COMMENT " <comment_string> 
comment_string	  ::= string
compact		  ::= "COMPACT" | "NO_COMPACT" 
comparant	  ::= [ <value_typer> ] string
comparator	  ::= string
compression       ::= "c"
conditional_text  ::= <if_spec> | "ELSE" | "ENDIF"
control_directive ::= <processor> <variable>  <conditional_text> <include> <assert> <comment> <spaces> <mark> <increment> <compact> <replace> <table>
converter	  ::= <string_converter> | <value_converter>
data_processor    ::= <processor_id> | <processing_def>
data_directive	  ::= <src_data> [<processing_spec>]
data_id		  ::= string
dhp_body          ::= <dhp_text>...
dhp_file	  ::= <dhp_header> <dhp_body>
dhp_header	  ::= "<&--dhp" [<start_char> <stop_char> [<compression>]] ">"
dhp_text	  ::= <start_char> <directive> <stop_char>| <non_directive>
directive	  ::= <control_directive> | <data_directive>
file_spec	  ::= string
format_specifier  ::= string (containing %...d %...s %...f, like c-printf syntax)
format_string	  ::= [ <converter> ] <formatspecifier>
heading		  ::= string
if_spec		  ::= "IF " <src_data> <comparator> [ <comparant> ]
include		  ::= "INCLUDE " <file_spec>
increment	  ::= "INCREMENT " <variable_id> 
literal		  ::= "&" string
mark		  ::= "MARK" | "MARK_NO_OUTPUT:" string | "MARK_NO_OUTPUT:" string
non_directive     ::= string
nr_variables	  ::= integer
pipe		  ::= "|"
processing	  ::= <pipe> <data_processor>
processing_def	  ::= <translator> | <formatter>
processing_spec	  ::= <processing>...
processor	  ::= "PROCESSOR " <processor_id> ":" <processing_def>
processor_id	  ::= "P1" | "P2" | "P3" | ... | "PY" | "PZ"
replace		  ::= "REPLACE" | "NO_REPLACE" 
spaces		  ::= "SPACES" | "NO_SPACES" | "NO_LEADING_SPACES" | "SPACE"
src_data	  ::= <literal> | <variable_id> | <data_id>
start_char        ::= character (default "[")
stop_char         ::= character (default "]")
string_converter  ::= string
table		  ::= "TABLE " <table_id>
table_id	  ::= "IP" | "URL" | "REFERER" | "BROWSER" | "REPORT" | "VIA" | "LOGGING" | "STATUS" | "EXTRA_STATUS"
text_file	  ::= string
translator	  ::= <casedef> [ <next_casedef> ... ]
value_converter   ::= string
value_typer	  ::= string
variable	  ::= "VARIABLE " <variable_id> ":" <data_spec>
variable_id	  ::= "V1" | "V2" | "V3" | ... | "VY" | "VZ"
variable_descr    ::= string