APENDICE E

DESCRIPCION FORMAL DEL LENGUAJE DE FORMATEO DE CDS/ISIS

La sintáxis del lenguaje de formateo se describe a continuación con la notación Backus-Naur.

 

<fmto-isis> :== <elem-fmto> | <elem-fmto><separador><fmto-isis>

<separador> :== , | espacio | <cadena-espaciadora> | ,<separador> | espacio<separador>

<cadena-espaciadora> :== <parámetro-espaciado> | <parámetro-espaciado><cadena-espaciadora>

<parámetro-espaciado> :== / | # | % | C<entero> | X<entero>

<elem-fmto> :== <selector-campo> | <campo-dummy> | <u-lit> | <declaración-if> | <cadena-espaciadora> | <mfn> | <parámetro-modo> | <cadena-esc> | <función-cadena> | <grupo-repetible>

<u-lit> :== '<cadena-caract>' | `<cadena-caract>`

<mfn :== MFN | MFN(<entero>)

<parámetro-modo> :== MPL | MPU | MHL | MHU | MDL | MDU

<cadena-esc> :== !<esc-d><secuencia-esc><esc-d>

<esc-d> :== cualquier carácter no contenido en <secuencia-esc>

<grupo-repetible> :== (<fmto-isis>)

<selector-campo> :== <fmto-campo> | <prefijo><fmto-campo> | <prefijo><fmto-campo><sufijo>

<campo-dummy> :== <id-dummy> | <cadena-c><id-dummy>

<id-dummy> :== D<id-campo> | N<id-campo>

<fmto-campo> :== <campo> | <campo>(<sangría>)

<sangría> :== <entero> | <entero>,<entero>

<campo> :== V<id-campo>

<id-campo> :== <entero> | <entero>^<carácter>

<prefijo> :== <cadena-c> | <cadena-c><r-prelit> | <r-prelit>

<cadena-c> :== <c-lit> | <c-lit><grupo-c> | <c-lit><cadena-c>

<grupo-c> :== <c-fmto> | <c-fmto><grupo-c>

<c-fmto> :== <parámetro-espaciado> | <cadena-esc> | <parámetro-modo>

<r-prelit> :== <r-lit> | <r-lit>+

<sufijo> :== <r-postlit> | <c-lit> | <r-postlit><c-lit>

<r-postlit> :== <r-lit> | +<r-lit>

<c-lit> :== "<cadena-carácter>"

<r-lit> :== |<cadena-carácter>|

<declaración-if> :== IF <expr-booleana> THEN <fmto-isis> FI | IF <expr-booleana> THEN <fmto-isis> ELSE <fmto-isis> FI

<expr-booleana> :== <término-booleano> | <término-booleano> OR <expr-booleana>

<término-booleano> :== <factor-booleano> | <factor-booleano> AND <término-booleano>

<factor-booleano> :== <relación> | NOT <relación> | (<expr-booleana>)

<relación> :== <expr-cadena><oprel-cadena><expr-cadena> | <expr-num><oprel><expr-num> | <función-booleana>

<expr-cadena> :== <factor-cadena> | <factor-cadena> | <expr-cadena>

<factor-cadena> :== <U-lit> | <campo> | <función-cadena> | (<expr-cadena>)<oprel-cadena> :== <oprel> | :

<oprel> :== = | <> | < | <= | > | >=

<expr-num> :== <término> | <término>+<término> | <término>-<término>

<término> :== <factor> | <factor>*<factor> | <factor>/<factor>

<factor> :== <constante> | <función-num> | (<expr-num>)

<función-num> :== RSUM(<fmto-isis>) | RMAX(<fmto-isis>) | RMIN(<fmto-isis>) | RAVR(<fmto-isis>) | VAL(<fmto-isis>) | L(<fmto-isis>)

<función-cadena> :== REF(<expr-num>,<fmto-isis>) | S(<fmto-isis>) | F(<expr-num>,<expr-num>,<expr-num>)

<función-booleana> :== A(<campo>) | P(<campo>)


INDICE GENERAL