umouse

umouse.git
git clone git://git.lenczewski.org/umouse.git
Log | Files | Refs | Submodules | README

DPANS15.HTM (18471B)


      1 <HTML><HEAD>
      2 <TITLE>DPANS94</TITLE>
      3 <link disabled rel="stylesheet" href="mpexc6.css">
      4 <style>@import url(mpexc6.css);</style>
      5 </head>
      6 
      7 <BODY>
      8 <table width=100%>
      9 <tr>
     10 <td align=left>
     11 <a href=dpans14.htm><img src=left.gif
     12  width=26 height=26 align=ALIGN border=0></a>
     13 <a href=dpans16.htm><img src=right.gif
     14  width=26 height=26 align=ALIGN border=0></a>
     15 </td>
     16 <td align=right>
     17 <a href=dpans.htm#toc><img src=up.gif 
     18  width=26 height=26 align=ALIGN border=0></a>
     19 <a name=15.>Table of Contents</a>
     20 </td>
     21 </tr>
     22 </table>
     23 <p>
     24 <hr size=4>
     25 
     26 <H1>15. The optional Programming-Tools word set</H1>
     27 
     28 <p>
     29 <code>
     30 See:
     31 <a href=dpansa15.htm>15.</a> The optional Programming-Tools word set
     32 </code>
     33 <p>
     34 
     35 <hr>
     36 <A name=15.1>
     37 <H2>15.1 Introduction</H2>
     38 </a>
     39 
     40 This optional word set contains words most often used during the development
     41 of applications.
     42 <P>
     43 
     44 <hr>
     45 <A name=15.2>
     46 <H2>15.2 Additional terms and notation</H2>
     47 </a>
     48 
     49 None.
     50 <P>
     51 
     52 <hr>
     53 <A name=15.3>
     54 <H2>15.3 Additional usage requirements</H2>
     55 </a>
     56 
     57 
     58 <hr>
     59 <A name=15.3.1>
     60 <H3>15.3.1 Environmental queries</H3>
     61 </a>
     62 
     63 Append table 15.1 to table 3.5.
     64 <P>
     65 
     66 <code>
     67 See:
     68 <A href=dpans3.htm#3.2.6>3.2.6</a> Environmental queries
     69 </code>
     70 <P>
     71 
     72 Table 15.1 - Environmental query strings
     73 <P>
     74 
     75 
     76 <PRE>
     77 String      Value data type   Constant?  Meaning
     78 ------      ---------------   ---------  -------
     79 TOOLS       flag              no         programming-tools word set present
     80 TOOLS-EXT   flag              no         programming-tools extensions word set present
     81 </PRE>
     82 
     83 
     84 <P>
     85 
     86 <hr>
     87 <A name=15.3.2>
     88 <H3>15.3.2 The Forth dictionary</H3>
     89 </a>
     90 
     91 A program using the words 
     92 <a href=dpans15.htm#15.6.2.0930>CODE</a> or 
     93 <a href=dpans15.htm#15.6.2.0470>;CODE</a> 
     94 associated with assembler code has an
     95 environmental dependency on that particular instruction set and assembler
     96 notation.
     97 
     98 <P>
     99 
    100 Programs using the words 
    101 <a href=dpans15.htm#15.6.2.1300>EDITOR</a> or 
    102 <a href=dpans15.htm#15.6.2.0740>ASSEMBLER</a> 
    103 require the 
    104 <a href=dpans16.htm>Search Order word set</a>
    105 or an equivalent implementation-defined capability.
    106 
    107 <P>
    108 
    109 <code>
    110 See:
    111 <A href=dpans3.htm#3.3>3.3</a> The Forth dictionary
    112 </code>
    113 
    114 <P>
    115 
    116 <hr>
    117 <A name=15.4>
    118 <H2>15.4 Additional documentation requirements</H2>
    119 </a>
    120 
    121 <hr>
    122 <A name=15.4.1>
    123 <H3>15.4.1 System documentation</H3>
    124 </a>
    125 
    126 <hr>
    127 <A name=15.4.1.1>
    128 <H4>15.4.1.1 Implementation-defined options</H4>
    129 </a>
    130 
    131 <UL>
    132 <LI>ending sequence for input following 
    133 <a href=dpans15.htm#15.6.2.0470>15.6.2.0470</a> ;CODE and 
    134 <a href=dpans15.htm#15.6.2.0930>15.6.2.0930</a> CODE;
    135 <LI>manner of processing input following 
    136 <a href=dpans15.htm#15.6.2.0470>15.6.2.0470</a> ;CODE and 
    137 <a href=dpans15.htm#15.6.2.0930>15.6.2.0930</a> CODE;
    138 <LI>search-order capability for 
    139 <a href=dpans15.htm#15.6.2.1300>15.6.2.1300</a> EDITOR and 
    140 <a href=dpans15.htm#15.6.2.0740>15.6.2.0740</a> ASSEMBLER 
    141 (<a href=dpans15.htm#15.3.2>15.3.2</a> The Forth dictionary);
    142 <LI>source and format of display by 
    143 <a href=dpans15.htm#15.6.1.2194>15.6.1.2194</a> SEE.
    144 </ul>
    145 
    146 <hr>
    147 <a name=15.4.1.2>
    148 <h4>15.4.1.2 Ambiguous conditions</h4>
    149 </a>
    150 
    151 <ul>
    152 <LI>deleting the compilation word-list 
    153 (<a href=dpans15.htm#15.6.2.1580>15.6.2.1580</a> FORGET);
    154 <LI>fewer than u+1 items on control-flow stack 
    155 (<a href=dpans15.htm#15.6.2.1015>15.6.2.1015</a> CSPICK,
    156 <a href=dpans15.htm#15.6.2.1020>15.6.2.1020</a> CSROLL);
    157 <LI>name can't be found 
    158 (<a href=dpans15.htm#15.6.2.1580>15.6.2.1580</a> FORGET);
    159 <LI>name not defined via 
    160 <a href=dpans6.htm#6.1.1000>6.1.1000</a> CREATE 
    161 (<a href=dpans15.htm#15.6.2.0470>15.6.2.0470</a> ;CODE);
    162 <LI>
    163 <a href=dpans6.htm#6.1.2033>6.1.2033</a> POSTPONE applied to 
    164 <a href=dpans15.htm#15.6.2.2532>15.6.2.2532</a> [IF];
    165 <LI>reaching the end of the input source before matching 
    166 <a href=dpans15.htm#15.6.2.2531>15.6.2.2531</a> [ELSE] or 
    167 <a href=dpans15.htm#15.6.2.2533>15.6.2.2533</a> [THEN] 
    168 (<a href=dpans15.htm#15.6.2.2532>15.6.2.2532</a> [IF]);
    169 <LI>removing a needed definition 
    170 (<a href=dpans15.htm#15.6.2.1580>15.6.2.1580</a> FORGET).
    171 </UL>
    172 <P>
    173 
    174 <hr>
    175 <A name=15.4.1.3>
    176 <H4>15.4.1.3 Other system documentation</H4>
    177 </a>
    178 
    179 <ul>
    180 <li>no additional requirements.
    181 </ul>
    182 <P>
    183 
    184 <hr>
    185 <A name=15.4.2>
    186 <H3>15.4.2 Program documentation</H3>
    187 </a>
    188 
    189 <hr>
    190 <A name=15.4.2.1>
    191 <H4>15.4.2.1 Environmental dependencies</H4>
    192 </a>
    193 
    194 <UL>
    195 <LI>using the words 
    196 <a href=dpans15.htm#15.6.2.0470>15.6.2.0470</a> ;CODE or 
    197 <a href=dpans15.htm#15.6.2.0930>15.6.2.0930</a> CODE.
    198 </ul>
    199 
    200 <hr>
    201 <A name=15.4.2.2>
    202 <h4>15.4.2.2 Other program documentation</h4>
    203 </a>
    204 <ul>
    205 <LI>no additional requirements.
    206 </UL>
    207 
    208 <P>
    209 
    210 <hr>
    211 <A name=15.5>
    212 <H2>15.5 Compliance and labeling</H2>
    213 </a>
    214 
    215 
    216 <hr>
    217 <A name=15.5.1>
    218 <H3>15.5.1 ANS Forth systems</H3>
    219 </a>
    220 
    221 The phrase <B>Providing the Programming-Tools word set</B> shall be
    222 appended to the label of any Standard System that provides all of the
    223 Programming-Tools word set.
    224 
    225 <P>
    226 
    227 The phrase <B>Providing name(s) from the Programming-Tools Extensions
    228 word set</B> shall be appended to the label of any Standard System that
    229 provides portions of the Programming-Tools Extensions word set.
    230 
    231 <P>
    232 
    233 The phrase <B>Providing the Programming-Tools Extensions word set</B>
    234 shall be appended to the label of any Standard System that provides all
    235 of the Programming-Tools and Programming-Tools Extensions word sets.
    236 
    237 <P>
    238 
    239 <hr>
    240 <A name=15.5.2>
    241 <H3>15.5.2 ANS Forth programs</H3>
    242 </a>
    243 
    244 The phrase <B>Requiring the Programming-Tools word set</B> shall be
    245 appended to the label of Standard Programs that require the system to
    246 provide the Programming-Tools word set.
    247 
    248 <P>
    249 
    250 The phrase <B>Requiring name(s) from the Programming-Tools Extensions
    251 word set</B> shall be appended to the label of Standard Programs that
    252 require the system to provide portions of the Programming-Tools
    253 Extensions word set.
    254 
    255 <P>
    256 
    257 The phrase <B>Requiring the Programming-Tools Extensions word set</B>
    258 shall be appended to the label of Standard Programs that require the
    259 system to provide all of the Programming-Tools and Programming-Tools
    260 Extensions word sets.
    261 
    262 <P>
    263 
    264 <hr>
    265 <A name=15.6>
    266 <H3>15.6 Glossary</H3>
    267 </a>
    268 
    269 
    270 <hr>
    271 <A name=15.6.1>
    272 <H3>15.6.1 Programming-Tools words</H3>
    273 </a>
    274 
    275 
    276 <hr>
    277 <A name=15.6.1.0220>
    278 <code>
    279 15.6.1.0220 <b>.S</b>
    280 </code>
    281 </a>
    282 <BR>
    283 <B>dot-s</B> TOOLS
    284 <BR>
    285 <pre>
    286 	( -- )
    287 </pre>
    288 <P>
    289 
    290 Copy and display the values currently on the data stack.  The format of
    291 the display is implementation-dependent.
    292 
    293 <P>
    294 
    295 .S may be implemented using pictured numeric output words.
    296 Consequently, its use may corrupt the transient region identified by 
    297 <a href=dpans6.htm#6.1.0040>#&gt;</a>.
    298 <P>
    299 
    300 <code>
    301 See:
    302 <a href=dpansa15.htm#A.15.6.1.0220>A.15.6.1.0220 .S</a> ,
    303 <A href=dpans3.htm#3.3.3.6>3.3.3.6</a> Other transient regions.
    304 </code>
    305 
    306 <P>
    307 
    308 <hr>
    309 <A name=15.6.1.0600>
    310 <code>
    311 15.6.1.0600 <b>?</b>
    312 </code>
    313 </a>
    314 <BR>
    315 <B>question</B>      TOOLS
    316 <BR>
    317 <pre>
    318 	( a-addr -- )
    319 </pre>
    320 <P>
    321 
    322 Display the value stored at a-addr.
    323 <P>
    324 
    325 ? may be implemented using pictured numeric output words.  Consequently,
    326 its use may corrupt the transient region identified by 
    327 <a href=dpans6.htm#6.1.0040>#&gt;</a>.
    328 <P>
    329 
    330 <code>
    331 See:
    332 <A href=dpans3.htm#3.3.3.6>3.3.3.6</a> Other transient regions
    333 </code>
    334 
    335 <P>
    336 
    337 <hr>
    338 <A name=15.6.1.1280>
    339 <code>
    340 15.6.1.1280 <b>DUMP</b>
    341 </code>
    342 </a>
    343 <BR>
    344 TOOLS
    345 <BR>
    346 <pre>
    347 	( addr u -- )
    348 </pre>
    349 <P>
    350 
    351 Display the contents of u consecutive addresses starting at addr.  The
    352 format of the display is implementation dependent.
    353 
    354 <P>
    355 
    356 DUMP may be implemented using pictured numeric output words.
    357 Consequently, its use may corrupt the transient region identified by 
    358 <a href=dpans6.htm#6.1.0040>#&gt;</a>.
    359 
    360 <P>
    361 
    362 <code>
    363 See:
    364 <A href=dpans3.htm#3.3.3.6>3.3.3.6</a> Other transient regions
    365 </code>
    366 
    367 <P>
    368 
    369 <hr>
    370 <A name=15.6.1.2194>
    371 <code>
    372 15.6.1.2194 <b>SEE</b>
    373 </code>
    374 </a>
    375 <BR>
    376 TOOLS
    377 <BR>
    378 <pre>
    379 	( <B>"&lt;spaces&gt;name"</B> -- )
    380 </pre>
    381 <P>
    382 
    383 Display a human-readable representation of the named word's definition.
    384 The source of the representation (object-code decompilation, source
    385 block, etc.) and the particular form of the display is implementation
    386 defined.
    387 
    388 <P>
    389 
    390 SEE may be implemented using pictured numeric output words.
    391 Consequently, its use may corrupt the transient region identified by 
    392 <a href=dpans6.htm#6.1.0040>#&gt;</a>.
    393 
    394 <P>
    395 
    396 <code>
    397 See:
    398 <A href=dpans3.htm#3.3.3.6>3.3.3.6</a> Other transient regions,
    399 <a href=dpansa15.htm#A.15.6.1.2194>A.15.6.1.2194 SEE</a>
    400 </code>
    401 
    402 <P>
    403 
    404 <hr>
    405 <A name=15.6.1.2465>
    406 <code>
    407 15.6.1.2465 <b>WORDS</b>
    408 </code>
    409 </a>
    410 <BR>
    411 TOOLS
    412 <BR>
    413 <pre>
    414 	( -- )
    415 </pre>
    416 <P>
    417 
    418 List the definition names in the first word list of the search order.
    419 The format of the display is implementation-dependent.
    420 
    421 <P>
    422 
    423 WORDS may be implemented using pictured numeric output words.
    424 Consequently, its use may corrupt the transient region identified by 
    425 <a href=dpans6.htm#6.1.0040>#&gt;</a>.
    426 <P>
    427 
    428 <code>
    429 See:
    430 <A href=dpans3.htm#3.3.3.6>3.3.3.6</a> Other transient regions,
    431 <a href=dpansa15.htm#A.15.6.1.2465>A.15.6.1.2465 WORDS</a>
    432 </code>
    433 
    434 <P>
    435 
    436 <hr>
    437 <A name=15.6.2>
    438 <H3>15.6.2 Programming-Tools extension words</H3>
    439 </a>
    440 
    441 
    442 <hr>
    443 <A name=15.6.2.0470>
    444 <code>
    445 15.6.2.0470 <b>;CODE</b>
    446 </code>
    447 </a>
    448 <BR>
    449 <B>semicolon-code</B>        TOOLS EXT
    450 <P>
    451 <pre>
    452 	Interpretation: Interpretation semantics for this word are undefined.
    453 </pre>
    454 <PRE>
    455         Compilation: ( C: colon-sys -- )
    456 </PRE>
    457 <P>
    458 
    459 Append the run-time semantics below to the current definition.  End the
    460 current definition, allow it to be found in the dictionary, and enter
    461 interpretation state, consuming colon-sys.
    462 
    463 <P>
    464 
    465 Subsequent characters in the parse area typically represent source code
    466 in a programming language, usually some form of assembly language.
    467 Those characters are processed in an implementation-defined manner,
    468 generating the corresponding machine code.  The process continues,
    469 refilling the input buffer as needed, until an implementation-defined
    470 ending sequence is processed.
    471 
    472 
    473 <PRE>
    474         Run-time: ( -- ) ( R: nest-sys -- )
    475 </PRE>
    476 
    477 <P>
    478 
    479 Replace the execution semantics of the most recent definition with the
    480 name execution semantics given below.  Return control to the calling
    481 definition specified by nest-sys.  An ambiguous condition exists if the
    482 most recent definition was not defined with 
    483 <a href=dpans6.htm#6.1.1000>CREATE</a> or a user-defined
    484 word that calls CREATE.
    485 
    486 <PRE>
    487         <i>name</i> Execution: ( i*x -- j*x )
    488 </PRE>
    489 <P>
    490 
    491 Perform the machine code sequence that was generated following ;CODE.
    492 <P>
    493 
    494 <code>
    495 See:    
    496 <a href=dpansa15.htm#A.15.6.2.0470>A.15.6.2.0470 ;CODE</a> ,
    497 <A href=dpans6.htm#6.1.1250>6.1.1250 DOES&gt;</a>
    498 </code>
    499 
    500 <P>
    501 
    502 <hr>
    503 <A name=15.6.2.0702>
    504 <code>
    505 15.6.2.0702 <b>AHEAD</b>
    506 </code>
    507 </a>
    508 <BR>
    509 TOOLS EXT
    510 <P>
    511 <pre>
    512 	Interpretation: Interpretation semantics for this word are undefined.
    513 </pre>
    514 
    515 <PRE>
    516         Compilation: ( C: -- orig )
    517 </PRE>
    518 
    519 Put the location of a new unresolved forward reference orig onto the
    520 control flow stack.  Append the run-time semantics given below to the
    521 current definition.  The semantics are incomplete until orig is resolved
    522 (e.g., by 
    523 <a href=dpans6.htm#6.1.2270>THEN</a>).
    524 
    525 
    526 <PRE>
    527         Run-time: ( -- )
    528 </PRE>
    529 <P>
    530 
    531 Continue execution at the location specified by the resolution of orig.
    532 
    533 <P>
    534 
    535 <hr>
    536 <A name=15.6.2.0740>
    537 <code>
    538 15.6.2.0740 <b>ASSEMBLER</b>
    539 </code>
    540 </a>
    541 <BR>
    542 TOOLS EXT
    543 <BR>
    544 <pre>
    545 	( -- )
    546 </pre>
    547 <P>
    548 
    549 Replace the first word list in the search order with the ASSEMBLER word
    550 list.
    551 <P>
    552 
    553 <code>
    554 See:
    555 <A href=dpans16.htm#16.>16.</a> The optional Search-Order word set
    556 </code>
    557 
    558 <P>
    559 
    560 <hr>
    561 <A name=15.6.2.0830>
    562 <code>
    563 15.6.2.0830 <b>BYE</b>
    564 </code>
    565 </a>
    566 <BR>
    567 TOOLS EXT
    568 <BR>
    569 <pre>
    570 	( -- )
    571 </pre>
    572 <P>
    573 
    574 Return control to the host operating system, if any.
    575 <P>
    576 
    577 
    578 <hr>
    579 <A name=15.6.2.0930>
    580 <code>
    581 15.6.2.0930 <b>CODE</b>
    582 </code>
    583 </a>
    584 <BR>
    585 TOOLS EXT
    586 <BR>
    587 <pre>
    588 	( <B>"&lt;spaces&gt;name"</B> -- )
    589 </pre>
    590 <P>
    591 
    592 Skip leading space delimiters.  Parse name delimited by a space.  Create
    593 a definition for name, called a <B>code definition</B>, with the
    594 execution semantics defined below.
    595 
    596 <P>
    597 
    598 Subsequent characters in the parse area typically represent source code
    599 in a programming language, usually some form of assembly language.
    600 Those characters are processed in an implementation-defined manner,
    601 generating the corresponding machine code.  The process continues,
    602 refilling the input buffer as needed, until an implementation-defined
    603 ending sequence is processed.
    604 
    605 
    606 <PRE>
    607         <i>name</i> Execution: ( i*x -- j*x )
    608 </PRE>
    609 <P>
    610 
    611 Execute the machine code sequence that was generated following CODE.
    612 <P>
    613 
    614 <code>
    615 See:
    616 <a href=dpansa15.htm#A.15.6.2.0930>A.15.6.2.0930 CODE</a> ,
    617 <A href=dpans3.htm#3.4.1>3.4.1</a> Parsing.
    618 </code>
    619 
    620 <P>
    621 
    622 <hr>
    623 <A name=15.6.2.1015>
    624 <code>
    625 15.6.2.1015 <b>CS-PICK</b>
    626 </code>
    627 </a>
    628 <BR>
    629 <B>c-s-pick</B>      TOOLS EXT
    630 <BR>
    631 <P>
    632 <pre>
    633 	Interpretation: Interpretation semantics for this word are undefined.
    634 </pre>
    635 <P>
    636 <pre>
    637 	Execution: ( C: destu ... orig0|dest0 -- destu ... orig0|dest0 destu )( S: u -- )
    638 </pre>
    639 <P>
    640 
    641 Remove u.  Copy destu to the top of the control-flow stack.  An
    642 ambiguous condition exists if there are less than u+1 items, each of
    643 which shall be an orig or dest, on the control-flow stack before CS-PICK
    644 is executed.
    645 
    646 <P>
    647 
    648 If the control-flow stack is implemented using the data stack, u shall
    649 be the topmost item on the data stack.
    650 
    651 <p>
    652 <code>
    653 See:
    654 <a href=dpansa15.htm#A.15.6.2.1015>A.15.6.2.1015 CS-PICK</a>
    655 </code>
    656 <p>
    657 
    658 
    659 <hr>
    660 <A name=15.6.2.1020>
    661 <code>
    662 15.6.2.1020 <b>CS-ROLL</b>
    663 </code>
    664 </a>
    665 <BR>
    666 <B>c-s-roll</B>      TOOLS EXT
    667 <P>
    668 <pre>
    669 	Interpretation: Interpretation semantics for this word are undefined.
    670 </pre>
    671 <P>
    672 <pre>
    673 	Execution: ( C: origu|destu origu-1|destu-1 ... orig0|dest0 --
    674                           origu-1|destu-1 ... orig0|dest0 origu|destu )( S: u -- )
    675 </pre>
    676 <P>
    677 
    678 Remove u.  Rotate u+1 elements on top of the control-flow stack so that
    679 origu|destu is on top of the control-flow stack.  An ambiguous condition
    680 exists if there are less than u+1 items, each of which shall be an orig
    681 or dest, on the control-flow stack before CS-ROLL is executed.
    682 
    683 <P>
    684 
    685 If the control-flow stack is implemented using the data stack, u shall
    686 be the topmost item on the data stack.
    687 
    688 <p>
    689 <code>
    690 See:
    691 <a href=dpansa15.htm#A.15.6.2.1020>A.15.6.2.1020 CS-ROLL</a>
    692 </code>
    693 <p>
    694 
    695 
    696 <hr>
    697 <A name=15.6.2.1300>
    698 <code>
    699 15.6.2.1300 <b>EDITOR</b>
    700 </code>
    701 </a>
    702 <BR>
    703 TOOLS EXT
    704 <BR>
    705 <pre>
    706 	( -- )
    707 </pre>
    708 <P>
    709 
    710 Replace the first word list in the search order with the EDITOR word
    711 list.
    712 
    713 <P>
    714 
    715 <code>
    716 See:
    717 <A href=dpans16.htm#16.>16.</a> The Optional Search-Order Word Set
    718 </code>
    719 
    720 <P>
    721 
    722 <hr>
    723 <A name=15.6.2.1580>
    724 <code>
    725 15.6.2.1580 <b>FORGET</b>
    726 </code>
    727 </a>
    728 <BR>
    729 TOOLS EXT
    730 <BR>
    731 <pre>
    732 	( <B>"&lt;spaces&gt;name"</B> -- )
    733 </pre>
    734 <P>
    735 
    736 Skip leading space delimiters.  Parse name delimited by a space.  Find
    737 name, then delete name from the dictionary along with all words added to
    738 the dictionary after name.  An ambiguous condition exists if name cannot
    739 be found.
    740 
    741 <P>
    742 
    743 If the Search-Order word set is present, FORGET searches the compilation
    744 word list.  An ambiguous condition exists if the compilation word list
    745 is deleted.
    746 
    747 <P>
    748 
    749 An ambiguous condition exists if FORGET removes a word required for
    750 correct execution.
    751 
    752 <P>
    753 
    754 <b>Note:</b> This word is obsolescent and is included as a concession to
    755 existing implementations.
    756 
    757 <P>
    758 
    759 <code>
    760 See:
    761 <a href=dpansa15.htm#A.15.6.2.1580>A.15.6.2.1580 FORGET</a> ,
    762 <A href=dpans3.htm#3.4.1>3.4.1</a> Parsing,
    763 <a href=dpans6.htm#6.2.1850>6.2.1850 MARKER</a>
    764 </code>
    765 <P>
    766 
    767 <hr>
    768 <A name=15.6.2.2250>
    769 <code>
    770 15.6.2.2250 <b>STATE</b>
    771 </code>
    772 </a>
    773 <BR>
    774 TOOLS EXT
    775 <BR>
    776 <pre>
    777 	( -- a-addr )
    778 </pre>
    779 <P>
    780 
    781 Extend the semantics of 
    782 <a href=dpans6.htm#6.1.2250>6.1.2250</a> STATE to allow 
    783 <a href=dpans15.htm#15.6.2.0470>;CODE</a> to change the
    784 value in STATE.  A program shall not directly alter the contents of
    785 STATE.
    786 
    787 <P>
    788 
    789 <code>
    790 See:
    791 <A href=dpans3.htm#3.4>3.4</a> The Forth text interpreter,
    792 <A href=dpans6.htm#6.1.0450>6.1.0450 :</a> ,
    793 <A href=dpans6.htm#6.1.0460>6.1.0460 ;</a> ,
    794 <A href=dpans6.htm#6.1.0670>6.1.0670 ABORT</a> ,
    795 <A href=dpans6.htm#6.1.2050>6.1.2050 QUIT</a> ,
    796 <A href=dpans6.htm#6.1.2500>6.1.2500 [</a> ,
    797 <A href=dpans6.htm#6.1.2540>6.1.2540 ]</a> ,
    798 <A href=dpans6.htm#6.2.0455>6.2.0455 :NONAME</a>
    799 </code>
    800 
    801 <P>
    802 
    803 <hr>
    804 <A name=15.6.2.2531>
    805 <code>
    806 15.6.2.2531 <b>[ELSE]</b>
    807 </code>
    808 </a>
    809 <BR>
    810 <B>bracket-else</B>  TOOLS EXT
    811 <BR>
    812 <P>
    813 <pre>
    814 	Compilation: Perform the execution semantics given below.
    815 </pre>
    816 <PRE>
    817         Execution: ( <B>"&lt;spaces&gt;name"</b> ... -- )
    818 </PRE>
    819 <P>
    820 
    821 Skipping leading spaces, parse and discard space-delimited words from
    822 the parse area, including nested occurrences of 
    823 <a href=dpans15.htm#15.6.2.2532>[IF]</a> ...  
    824 <a href=dpans15.htm#15.6.2.2533>[THEN]</a> and
    825 [IF] ...  [ELSE] ...  [THEN], until the word [THEN] has been parsed and
    826 discarded.  If the parse area becomes exhausted, it is refilled as with
    827 <a href=dpans6.htm#6.2.2125>REFILL</a>.  
    828 [ELSE] is an immediate word.
    829 
    830 <P>
    831 
    832 <code>
    833 See:
    834 <A href=dpans3.htm#3.4.1>3.4.1</a> Parsing,
    835 <a href=dpansa15.htm#A.15.6.2.2531>A.15.6.2.2531 [ELSE]</a>
    836 </code>
    837 
    838 <P>
    839 
    840 <hr>
    841 <A name=15.6.2.2532>
    842 <code>
    843 15.6.2.2532 <b>[IF]</b>
    844 </code>
    845 </a>
    846 <BR>
    847 <B>bracket-if</B>    TOOLS EXT
    848 <BR>
    849 <P>
    850 <pre>
    851 	Compilation: Perform the execution semantics given below.
    852 </pre>
    853 <P>
    854 <pre>
    855 	Execution: ( flag | flag <B>"&lt;spaces&gt;name"</b> ... -- )
    856 </pre>
    857 <P>
    858 
    859 If flag is true, do nothing.  Otherwise, skipping leading spaces, parse
    860 and discard space-delimited words from the parse area, including nested
    861 occurrences of [IF] ...  
    862 <a href=dpans15.htm#15.6.2.2533>[THEN]</a> and [IF] ...  
    863 <a href=dpans15.htm#15.6.2.2531>[ELSE]</a> ...  [THEN], until
    864 either the word [ELSE] or the word [THEN] has been parsed and discarded.
    865 If the parse area becomes exhausted, it is refilled as with 
    866 <a href=dpans6.htm#6.2.2125>REFILL</a>.
    867 [IF] is an immediate word.
    868 
    869 <P>
    870 
    871 An ambiguous condition exists if [IF] is 
    872 <a href=dpans6.htm#6.1.2033>POSTPONE</a>d, or if the end of the
    873 input buffer is reached and cannot be refilled before the terminating
    874 [ELSE] or [THEN] is parsed.
    875 
    876 <P>
    877 
    878 <code>
    879 See:
    880 <A href=dpans3.htm#3.4.1>3.4.1</a> Parsing,
    881 <a href=dpansa15.htm#A.15.6.2.2532>A.15.6.2.2532 [IF]</a>
    882 </code>
    883 
    884 <P>
    885 
    886 <hr>
    887 <A name=15.6.2.2533>
    888 <code>
    889 15.6.2.2533 <b>[THEN]</b>
    890 </code>
    891 </a>
    892 <BR>
    893 <B>bracket-then</B>  TOOLS EXT
    894 <BR>
    895 <P>
    896 <pre>
    897 	Compilation: Perform the execution semantics given below.
    898 </pre>
    899 <P>
    900 <pre>
    901 	Execution: ( -- )
    902 </pre>
    903 <P>
    904 
    905 Does nothing.  [THEN] is an immediate word.
    906 <P>
    907 <code>
    908 See:
    909 <a href=dpansa15.htm#A.15.6.2.2533>A.15.6.2.2533 [THEN]</a>
    910 </code>
    911 <p>
    912 
    913 <hr>
    914 <A href=dpans.htm#toc><IMG   src="up.gif" ></A>    Table of Contents 
    915 <BR>
    916 <A href=dpans16.htm><IMG   src="right.gif" ></A>
    917 Next Section
    918 <P>
    919 </BODY>
    920 </HTML>