diff --git a/exaudfclient/docs/script_options_requirments.md b/exaudfclient/docs/script_options_requirments.md index 5d94e1b2..caa68001 100644 --- a/exaudfclient/docs/script_options_requirments.md +++ b/exaudfclient/docs/script_options_requirments.md @@ -19,11 +19,16 @@ This section lists the key features of the new UDF Client Script Options parser ### General Script Options Parsing `feat~general-script-options-parsing~1` +Script Options must be parsed according to syntax definition. +Developers can add additional Options in an easy and consistent way. + Needs: req ### Java-specific Script Options `feat~java-specific-script-options~1` +The parser must process all Java specific options correctly. + Needs: req ## High-level Requirements @@ -33,23 +38,32 @@ This section details the high-level requirements for the new parser system, link ### General Script Options Parsing `req~general-script-options-parsing~1` -The parser must correctly identify and handle Script Options with the syntax `%optionKey optionValue;`. It must also manage whitespace and ignore non-Script Options as specified. +The parser must correctly identify and handle Script Options with the syntax `%;`. It must also manage white spaces and ignore non-Script Options as specified. Needs: dsn Covers: - `feat~general-script-options-parsing~1` -### Multiple and Duplicate Options Management -`req~multiple-duplicate-options-management~1` +### Multiple and Options +`req~multiple-options-management~1` -The parser must collect multiple Script Options with the same key and handle duplicates according to specific rules for different options. +The parser must collect multiple Script Options with the same key. Note: the specific handling depends on the option handler. + +Needs: dsn + +Covers: +- `feat~general-script-options-parsing~1` + +### Duplicate Options Management +`req~multiple-options-management~1` + +The parser must collect multiple Script Options with the same key and value. Note: the specific handling depends on the option handler. Needs: dsn Covers: - `feat~general-script-options-parsing~1` -- `feat~java-specific-script-options~1` ### Script Option Removal `req~script-option-removal~1` @@ -65,7 +79,7 @@ Covers: ### Java %scriptclass Option Handling `req~java-scriptclass-option-handling~1` -The parser must correctly identify a single %scriptclass option and remove any additional occurrences of this option within the script code. +The parser must correctly identify the first `%scriptclass` option and remove any additional occurrences of this option within the script code. Needs: dsn @@ -92,33 +106,49 @@ Needs: dsn Covers: - `feat~java-specific-script-options~1` +### Java %import Option Handling +`req~java-import-option-replace-referenced-scripts~1` + +For each found %import option, the parser must request and replace the referenced scripts recursively. This means, +if the referenced scripts contain also `%import` options, the implementation must replace those, too. + +Needs: dsn + +Covers: +- `feat~java-specific-script-options~1` + ### Java %import Option Handling `req~java-import-option-handling~1` -For each found %import option, the parser must request and replace the found Script Option with the referenced script code, also handling nested options appropriately. +For each found %import option, the parser must handle nested Script Options appropriately: +1. `%scriptclass` option must be ignored, but removed from the script code. +2. All other options must be handled as if they were part of the source script. Needs: dsn Covers: - `feat~java-specific-script-options~1` -### New Parser Implementation -`req~new-parser-implementation~1` +### Existing Parser Library Dependencies +`req~existing-parser-library-dependencies~1` The new parser must be implemented using an existing, open-source parser that supports definition of Lexer and Parser Rules in C++ code without additional runtime dependencies. +The implementation needs to be Open Source because the projects where the parser will be used are mainly Open Source, too. +It is important to avoid additional runtime dependencies, as this would complicate the setup and maintenance of the runtime environment of the UDF client (aka Script Languages Container). + Needs: dsn Covers: - `feat~general-script-options-parsing~1` -### New Parser Integration -`req~new-parser-integration~1` +### Existing Parser Linker Namespace Compatibility +`req~existing-parser-linker-namespace-compatibility~1` -Ensure that the new parser integrates seamlessly into the Exasol UDF Client environment, meeting all specified dependency and embedding requirements. +Ideally, the new parser should allow encapsulation in a custom C++ namespace, in order to avoid possible linker namespace conflicts with customer libraries. Needs: dsn Covers: - `feat~general-script-options-parsing~1` -- `feat~java-specific-script-options~1` +