S Y N T A X O F S C H E M A =============================== NOTATIONS: ---------- := : L W <...> ... cluster cluster-fragment string-expression defined in syntax_of_notations_help No L is allowed in schema except when explicity stated, except in string-expressions, except in an <arbitrary text>; GENERAL STRUCTURE ----------------- schema := [<an arbitrary text without token "\\"> ] \\ [schema-line] L [ schema-line L ] [ schema-line L ] ... [ schema-line L ] [ schema-line [ eos [<arbitrary text>]] schema-line := nest-pattern [W instruction] | W instruction eos := W ( "|" or "|end" ) PRINCIPAL CONSTRUCTS -------------------- nest-pattern := nest nest := state[,state][,state] ... state : cannot start with digit and apostrophe; cannot have comma or white_space inside names starting with hypen "-" are reserved; instruction := event-pattern queue [W comment] comment := '[<arbitrary text text without L>] : starts with apostrophe event-pattern := event event := token.type.scope all fragments of this cluster are optional, but event-pattern cannot be empty cluster: period or one of the fragemets is required; only token can include variables; queue := [member][member] ... where member := W ( normal-action | event-action | nest-action ) event-action := {+|*} [event] nest-action := {>|=|<} [ <number> | nest | <number>,nest ] normal-action := [:] [text.control.statement.parameter] all fragments of this cluster are optional; only text and parameter can include variables; GENERALIZATIONS =============== any number of neutral-lines can be inserted in the schema: neutral-line := <empty line> | [W]comment if queue ends with ":", it can be continued on the following continuation-line := queue IMMEDIATE ACTION := |statement.parameter ---------------- immediate action can be inserted anywere in schema except comment program (between .begin_program and .end_program) and must be terminated by soft character; this cluster has the same effect as normal-action ..statement.parameter, but executed at compile-schema time; NAMING CONVENTIONS ================== Normal-actions, variables, disk-variables, event-types, states belong different name-spaces. For example, event-name "=", event-type "=", action "=", control "=", operation "=", and state "=" denote different entities without risk. Any names can be used in schema for states, internal-event types, and variables except names restricted by syntax and except names listed below: VARIABLE NAME ------------- is described in variables_help.txt STATE NAME ---------- restrictions listed in state definition above; reserved state names listed in: Schema\States\important_names.txt EVENT NAME ---------- The third part, scope, if not omitted, can have only two predefined names: g,l. Programmer can create any names for type (without "."), but be aware about reserved names listed in Schema\Events\important_types_help.txt SCHEMA ALPHABET =============== Escape characters in queue -------------------------- = nest, no shifts; > nest, shift up < nest, shift down + event, (early-event) * event, (late-event) | compile-time action : action, continuation ' comment Miscellaneous characters ------------------------ . ClusterSeparator , ClusterSeparator for states in nest " String-Expression Beginning and End Escape related characters in String-Expression ---------------------------------------------- Escaper = "\" Variable Escaper = "$" NestVariable Escaper = "@" Variable Name Limitor = " ", CR, LF, TAB, "