# Default types

param:      Param;
step:       Step;
date:       Date;
levelist:   Double;
grid:       Grid;
expver:     Expver;
time:       Time;
number:     Integer;

########################################################
# The are the rules matching most of the fields
# oper/dcda
[ class, expver, stream=oper/dcda/scda, date, time, domain?
       [ type, levtype
               [ step, levelist?, param ]]
]

# dcwv/scwv/wave
[ class, expver, stream=dcwv/scwv/wave, date, time, domain
       [ type, levtype
               [ step, param, frequency?, direction? ]]]

# enfo
[ class, expver, stream=enfo/efov/eefo, date, time, domain
       [ type, levtype
               [ step, quantile?, number?, levelist?, param ]]
]

# waef/weov
[ class, expver, stream=waef/weov/weef, date, time, domain
       [ type, levtype
               [ step, number?, param, frequency?, direction? ]]
]

# enda
[ class, expver, stream=enda, date, time, domain

       [ type=ef/em/es/ses, levtype
               [ step, number?, levelist?, param, channel? ]]

       [ type=ssd
               [ step, number, param, ident, instrument, channel ]]


       [ type, levtype
               [ step, number?, levelist?, param ]]
]

# Lambert 
[ date, time
       [levtype
               [ step, param, frequency?, direction?]]
]
