sawine@0: prog ::= { rule } sawine@0: rule ::= pttrn sawine@0: | constrnt sawine@0: | flowp sawine@0: | COM sawine@0: flowp ::= FLOWP STRING "(" flowp_entry ")" sawine@0: flowp_entry ::= pttrn_lbl ":" constrnt_lbl sawine@0: pttrn_lbl ::= STRING sawine@0: constrnt_lbl ::= STRING sawine@0: constrnt ::= CONSTRNT STRING "(" cterm ")" sawine@0: cterm ::= TIMESEP AT string IS INTEGER si_unit sawine@0: | TIMESEP AT string_array IS INTEGER si_unit sawine@0: | TIMESEP AT string IS INTEGER si_unit FROM INTEGER sawine@0: UNTIL INTEGER sawine@0: | TIMESEP AT string_array IS INTEGER si_unit FROM sawine@0: INTEGER UNTIL INTEGER sawine@0: | TIMESEP AT string IS INTEGER si_unit AT FL int_array sawine@0: | TIMESEP AT string_array IS INTEGER si_unit AT FL sawine@0: int_array sawine@0: | TIMESEP AT string IS INTEGER si_unit FROM INTEGER sawine@0: UNTIL INTEGER AT FL int_array sawine@0: | TIMESEP AT string_array IS INTEGER si_unit FROM sawine@0: INTEGER UNTIL INTEGER AT FL int_array sawine@0: | cterm AND cterm sawine@0: si_unit ::= STRING sawine@0: pttrn ::= PATTERN ( STRING "(" term ")" | "(" term ")" ) sawine@0: term ::= int_pt int_op INTEGER sawine@0: | char_pt string_op string sawine@0: | string_pt string_op string sawine@0: | string_array_pt string_array_op string_array sawine@0: | string_array string_array_op string_array_pt sawine@0: | string string_string_array_op string_array_pt sawine@0: | string string_string_array_op char_array_pt sawine@0: | term OR term sawine@0: | term AND term sawine@0: | NOT term sawine@0: | "(" term ")" sawine@0: int_op ::= IS sawine@0: | IS NOT sawine@0: | GREATER THAN sawine@0: | LESS THAN sawine@0: string_op ::= IS [ NOT ] sawine@0: string_array_op ::= IS sawine@0: | IS NOT sawine@0: | IN sawine@0: | NOT IN sawine@0: string_string_array_op ::= [ NOT ] IN sawine@0: int_array ::= "[" ints "]" sawine@0: ints ::= { ( "," int | int ) } sawine@0: int ::= INTEGER sawine@0: string_array ::= "[" strings "]" sawine@0: strings ::= { ( "," string | string ) } sawine@0: int_pt ::= TAS sawine@0: char_pt ::= FTYP sawine@0: string_pt ::= ADEP sawine@0: | ADES sawine@0: | RWY sawine@0: | ATYP sawine@0: | COPX sawine@0: | FRUL sawine@0: | RFL sawine@0: | TRAVEL_TYPE sawine@0: string_array_pt ::= ROUTE sawine@0: char_array_pt ::= EQUIP sawine@0: string ::= QUOTE STRING QUOTE