(* * PBNF, the people's BNF, for beings capable of working at the apobetic level * * CHANGELOG: * ========== * 2002.02.28-15:30 * - convert to version 1.12 * * 2002.02.21-15:30 * - allowed for "application/*/use" element * - changed "call/@version" to @minIncludeVersion and @maxIncludeVersion * - fixed problem with mixed content in "application/*" * - changed "declare/@type" to "declare/@container" * - added "declare/@type" to declare the linkage of the parameter. * * 2002.02.21-09:30 * - (re-) creation date * *) definitions = { transformation | derivation } ; transformation = formal-parameter, transformation-body ; derivation = actual-parameter ; formal-parameter = { declare } (* declare formal parameter *) ; declare = (* declare a formal-parameter *) [ scalar | list | hash ] (* optional default values *) ; transformation-body = [ temporary ], (* local variables section *) { parameter-file }, (* any number of parameter files *) ( application, [ argument ] | (* simple transformation *) call, { call } ), (* compound transformation *) { environment }, { condor } ; temporary = declare2, { declare2 } (* special case, only scalars *) ; declare2 = (* declare a formal-parameter *) [ #PCDATA | use ] (* ??? what is in there ??? *) ; application = [ pre-script ], executable, [ postscript ] ; pre-script, post-script = <(pre|post)-script [ universe=UniverseType ] (* default: "scheduler" *) > ( #PCDATA | (* either a physical filename *) lfn | (* or a const lfn: in | none *) use ) (* referral to parameter content *) ; executable = ( #PCDATA | (* either a physical filename *) lfn | (* or a const lfn: in | none *) use ) (* referral to parameter content *) ; argument = { chunk } ; chunk = { #PCDATA | (* consider *) use | (* referral to parameter content *) br } (* visual markup option *) ; call = actual-parameter ; environment, condor = <(environment|condor) key=token> (* name of variable *) { #PCDATA | (* verbatim text *) use } (* referral to parameter content *) ; actual-parameter = { pass } ; pass = ( scalar | (* encapsulate as-is and lfn *) list | (* vector, or list *) hash ) (* dictionary *) scalar = { #PCDATA | (* verbatim value to pass *) lfn | (* NOT available within xforms *) use } (* NOT available in derivations *) ; list = { i } ; hash = { kv } ; i = { #PCDATA | (* verbatim value to pass *) lfn | (* NOT available within xforms *) use } (* NOT available in derivations *) ; kv = { #PCDATA | (* verbatim value to pass *) lfn | (* NOT available within xforms *) use } (* NOT available in derivations *) ; lfn = ; (* empty element *) use = ; (* empty element *) ContainerType = ( scalar | list | hash ) ; LinkageType = ( input | output | inout | none ) ; UniverseType = ( standard | vanilla | scheduler | globus | mpi | pvm | java ) ;