Communication protocol used between the applet and the cgi-bin program:
>l data_path<s(database_descr\n)*
>q data_path\nquery_pwd database_name <s! |sdatabase_body
>g data_path\nupdate_pwd database_name <s! | sdatabase_header_and_body
>p data_path\nupdate_pwd database_name database_header_and_body <s! | s
>c data_path\nupdate_pwd database_name <s! | s
>r data_path\nupdate_pwd database_name
>s data_path\nconfig_data <sname
where:
- text following '>' means data sent from the applet to the cgi-bin
- text following '<' means the cgi-bin response
- data_path represent the directory on web server where databasses are located
- \n represent Carriage Return (ASCII code 13)
- query_pwd, update_pwd are passwordss
- database_name

ATOMS:===============================================================
identificator string float { } ( ) = ! * / + - < <= > >= == != ? : , .

GRAMMAR:=============================================================
UPDATE_PWD
num_profiles
QUERY_PWD factor // x num_profiles
NUM_DEC
NOTES
num_comp
COMP_NAME "COMP_DESCR" comp_price // x num_comp
num_categ
CATEG_NAME "CATEG_DESCR" n_comp comp_num //comp_num x n_comp, line x num_categ
num_sys
n_categ SYS_NAME "SYS_DESCR" // x num_sys
categ_number MAX_EXPR [, MIN_EXPR] // x n_categ, x num_sys

EXPR: EQUAL_EXPR ? EXPR : EXPR
EQUAL_EXPR: RELATIONAL_EXPR | EQUAL_EXPR(==|!=)RELATIONAL_EXPR
RELATIONAL_EXPR: ADDITIVE_EXPR | RELATIONAL_EXPR(<|<=|>|>=)ADDITIVE_EXPR
ADDITIVE_EXPR: MULTIPLICATIVE_EXPR | ADDITIVE_EXPR('+'|'-')MULTIPLICATIVE_EXPR
MULTIPLICATIVE_EXPR: UNARY_EXPR | MULTIPLICATIVE_EXPR('*'|'/')UNARY_EXPR
UNARY_EXPR: SIMPLE_EXPR | ! UNARY_EXPR
SIMPLE_EXPR: float | VARIABLE | '(' EXPR ')'
VARIABLE: string[.string]

Precedence: ================================================================
!
* /
+ -
< <= > >=
== !=
?:

s