Lowercase words (e.g. profile, units_section or mix_list) represent non terminals, whereas uppercase words or words enclosed in double quotes (e.g. <UNITS>, </UNITS>, "Imperial" or <ALARM>BREATH</ALARM>) represent terminals.
profile -> <PROFILE UDCF = "1">
units_section
device_section
additional_section
repgroups
</PROFILE>
units_section -> <UNITS>
unitsymbol
</UNITS>
unitsymbol -> "Metric" | "Imperial"
device_section -> <DEVICE>
<VENDOR>
vendorString
</VENDOR>
<MODEL>
modelString
</MODEL>
<VERSION>
versionID
</VERSION>
</DEVICE>
vendorString -> String
modelString -> String
versionID -> Integer
additional_section -> <ADDINFO>
personal_desc
totalDives_desc
IDString_desc
</ADDINFO>
|
Empty
personal_desc -> <PERSINFO>
String
</PERSINFO>
|
Empty
totalDives_desc -> <TOTALDIVES>
Integer
</TOTALDIVES>
|
Empty
IDString_desc -> <SERIALID>
String
</SERIALID>
|
Empty
repgroups -> repgroups repgroupdesc
| repgroupdesc
repgroupdesc -> <REPGROUP>
divelist
</REPGROUP>
divelist -> divelist dive_desc
| dive_desc
dive_desc -> <DIVE>
place_desc
date
time
surface_interval
temperature
density
alt_info
gases_section
prg_data
samples
</DIVE>
place_desc -> <PLACE>
String
</PLACE>
|
Empty
date -> <DATE>
<YEAR>
year_desc
</YEAR>
<MONTH>
month_desc
</MONTH>
<DAY>
day_desc
</DAY>
</DATE>
day_desc -> Integer
month_desc -> Integer
year_desc -> Integer
time -> <TIME>
<HOUR>
hour_desc
</HOUR>
<MINUTE>
minute_desc
</MINUTE>
</TIME>
hour_desc -> Integer
minute_desc -> Integer
temperature -> <TEMPERATURE>
temp_desc
</TEMPERATURE>
|
Empty
temp_desc -> Real
density -> <DENSITY>
density_desc
</DENSITY>
density_desc -> Real
alt_info -> <ALTITUDE>
level
</ALTITUDE>
level -> Real
surface_interval -> <SURFACEINTERVAL>
interval_desc
</SURFACEINTERVAL>
interval_desc -> secs | INFINITY
secs -> Real
gases_section -> <GASES>
mix_list
</GASES>
mix_list -> mix_desc mix_list
| mix_desc
mix_desc -> <MIX>
<MIXNAME> mixname </MIXNAME>
tank_info
<O2> o2_ratio </O2>
<N2> n2_ratio </N2>
<HE> he_ratio </HE>
acv_desc
</MIX>
mixname -> String
n2_ratio -> Real
o2_ratio -> Real
he_ratio -> Real
acv_desc -> <ACV>
acv_value
</ACV>
|
Empty
acv_value -> Real
tank_info -> <TANK>
tank_volume_info
<PSTART>
press_in
</PSTART>
press_end_desc
</TANK>
|
Emtpy
press_end_desc -> <PEND>
press_out
</PEND>
|
Empty
press_in -> Real press_out -> Real
tank_volume_info -> <TANKVOLUME>
volume
</TANKVOLUME>
|
Empty
volume -> Real
prg_data -> <PRG>
String
</PRG>
|
Empty
samples -> delta_mode_marker
<SAMPLES>
delta_marker switch_desc sample_list_delta
</SAMPLES>
| timedep_mode_marker
<SAMPLES>
switch_desc sample_list_timedepth
</SAMPLES>
delta_mode_marker -> DELTAMODE
timedep_mode_marker -> TIMEDEPTHMODE
sample_list_delta -> sampledesc_delta sample_list_delta
| sampledesc_delta
sample_list_timedepth -> sampledesc_timedepth sample_list_timedepth
| sampledesc_timedepth
sampledesc_delta -> depth
| switch_desc
| temperature
| markers
sampledesc_timedepth -> point
| switch_desc
| temperature
| markers
delta_marker ->
<DELTA>
delta
</DELTA>
delta -> Real
markers -> <ALARM>SURFACE</ALARM>
| <ALARM>ASCENT</ALARM>
| <ALARM>DECO</ALARM>
| <ALARM>BREATH</ALARM>
| <ALARM>RBT</ALARM>
| <ALARM>ERROR</ALARM>
| workdesc
depth -> <DEPTH> Real </DEPTH>
point -> <T>
Real
</T>
<DEPTH>
Real
</DEPTH>
switch_desc -> <SWITCH>
changedMix
</SWITCH>
changedMix -> String
workdesc -> <WORK>
Real
</WORK>
String -> [a-zA-Z0-9\+\-\.@.,:;'=&\!$\~\(\)\*\ ]+
Real -> ((([0-9]+)|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?)|[0-9]+)
Integer -> -?[0-9]+
Empty -> Epsilon