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