THIS PAGE DESCRIBES SOME ACTION CONTROLS
========================================



COMMONLY USED:
--------------

.n              - no action; 
:               - ":" if not the last queue-element is interpreted as .n
                  if last, then is a queue-continuation

.end            - terminates text (file) execution; nest reset to -r
                  queue is deleted; variables undeclared
.end_text       - the same as .end
.stop           - terminates project execution and resets compiler
.compile_schema - immidiately triggers Compi to interpret incoming text as text of schema 

.i	  prepare an indent. Explained in indent_help.txt.
.I      same as .i, but outputs indent immediately.

.&      output action cluster's text (or token if text is empty) 
        to open streams if any; if not, then to resut text;
.&&     to BOTH opens streams and and result text.
.~      output to console.
.=      assign prepared-text 
        text.=MyVariable - assigns text to variable MyVariable
            .=MyVariable - assigns current token to MyVariable
        text.=           - assigns text to token
        
        control = can be used for replacement; format is:
        [text].=variable.replacee.replacer
        which replaces "replacee" with "replacer" in a [text].
        If [text] is omitted, then token used instead.
.0      clean up global queue, fast;
.1      clean up gloabl queue slow, but cleans up memory from garbage also;




CONTROLS WHICH ALTERNATE BETWEEN TOKEN AND TEXT
-----------------------------------------------

[text].=[variable]                   -     assigns text to variable;
                                           ..variable[.text] has the same effect;

[text].=variable.replacee.replacer   -     replaces "replacee" with "replacer" in a [text].

[text].~                             -     outputs text to console

[text].L[.[variable]]                -     assigns variable = low case ( text )
[text].U[.[variable]]                -     assigns variable = upper case ( text ) 
[text].T[.[variable]]                -     assigns variable = trim ( text )

[text].&                             -     outputs text to streams if any and not to main stream
                                           if none of streams are open, outputs to main stream
[text].&&                            -     outputs text to streams and 
                                           ultimately to main stream "out"
text.                                -     the same as text.&
text                                 -     the same as text.&
"".                                  -     the same as "".&
"some text"                          -     the same as "some text".&

If text is omitted in [text], then token used instead.
If variable is omitted then token is used instead.



DIRECT SOURCE TEXT ACCESS
-------------------------

[text].byte     - takes one byte from position pos from the source text.
                  Byte's value is interpreted as a number from 0 to 256.
                  If expression or srting [text] is not empty, then  pos = [text].
                  token = extracted byte is assigned to token.
                  Then position is advanced:  pos = pos + 1;
                  NO EVENTS ARE PRODUCED AT THIS ACTION		

[text].char     - acts similar way as "byte" but value is interpreted as a character.

[text].upto     - assumes that there is only one sepatator, 
                  and it is equal to [text];
                  so, all before [text] is assumed to be a token, 
                  and internal variable "token" receives a value of this token;
                  current tokenizer cursor is set to the beginning of [text];
                  if [text] is not found, all remaining text in source file
                  is assigned to the token, and "pos" is set to file_len + 1,
                  where "pos" is current tokenizer position.

                  for example: if action is 
                               =.upto
                               , and current source-text is 
                               string=string2,
                               , then 'text' = '='
                               , token = "string",
                               , and position = 7;

                     Schema: 
                        \\-r .bot :
                        ?.upto "token=$ " . " Here: $" .end
                        | Where is the end ? Omitted ...
                  
                     Output:
                        token= Where is the end  Here: ?

token resulted from this controls is (as always) a string:
      therefore, byte, word, lword, ... 
         are the strings of decimal characters, 
      f.e. byte in source text 0x40 will give string: "64".

.char              - takes character from current pos
.2chars            - takes two consequent chars
.word              - token = cstr( first*256 + second );
                     assuming that first byte is most significant:
                     big endian word storage;
.bword             - "backward" word: token = cstr( first  + second * 256 );
                     little endian word storage;
.lword             - "long word":
                     token = cstr( first*256*256*256 + second*256*256 + third*256 + fourth);
                     note: values greater than 2^31-1 submitted as negative
.blword            - token = cstr( fourth*256*256*256  + third*256*256   + second*256  + first);
                     note: values greater than 2^31-1 submitted as negative
.byte              - token = cstr( first ) 
.str<number>       - takes <number>-bytes length string from current pos;
                     pos is advanced to the first untaken byte after taken string;



FEW CONVERSION CONTROLS (most of them are useless)
--------------------------------------------------
  this controls do not accept text from the first action fragment as
       a token's replacement; 
  the text must be empty;
  result goes to varible "v" or to token:

 .%hc[.v]    - hexadecimal to character:
                   v = Chr(CInt(token)) like:  &h41 --> "A"   41  -->  "A"
 .%oc[.v]    - octal to character:
                   &O101 --> "A"  101  -->  "A"
 .%dc...     - v = char(clng(token)); "no change"  useless;
 .%dd...     - v = cstr(clng(token)); "no change", useless;
 .%cd...     - v = cstr(asc(token's first char));  taking ASCII;