PFE 0.33.71

Homepage
SourceForge
Download
Documentation
-Overview
-The PFE Manual
old manual / (book)
-ChangeLog
-Authors
-License (LGPL)
-Wordsets / (book)
-Functions .. (book)
-Dp of ANS Forth
-The 4thTutor
-Forthprimer.pdf
- Old Wordsets
- Old Words List
Forth Links
* Forth Repository
* Taygeta Compilation
* TinyBoot FirmWare
* FiCL, Free Forth
* Research Vienna
* Research Bournemouth
* zForth WebRing
Other Links
* Tektronix/MPT
* Forth Org. (FIG)
* Forth Inc.
* MPE Ltd. Forths
* SF Win32Forth
* PD Win32Forth
* Neil Bawd

generated
(C) Guido U. Draheim
guidod@gmx.de

## ZCHAR-EXT

> - zero-terminated C-like charstrings

`Z"``( [chars<">] -- z* )``` => `[FORTH]`

  scan the input to the next doublequote and create a buffer that holds the chars - return the address of that zero-terminated string-buffer, either `POCKET-PAD` or `ALLOT`ed into the dictionary.

  compiling word = [p4_z_quote]

`ZCOUNT``( z* -- z* len )``` => `[FORTH]`

  push length of z-string, additionally to the string addr itself.

        : ZSTRLEN ZCOUNT NIP ;

  (see libc strlen(3)) / compare with `COUNT` / `ZSTRLEN`

  primitive code = [p4_zcount]

`ZSTRLEN``( z* -- len )``` => `[FORTH]`

  push length of z-string.

        : ZSTRLEN ZCOUNT NIP ;

  (see libc strlen(3)) / compare with `ZMOVE` / `CMOVE`

  primitive code = [p4_zstrlen]

`ZMOVE``( zsrc* zdest* -- )``` => `[FORTH]`

  copy a zero terminated string (see libc strcpy(3)) / compare with `ZSTRLEN` / `COUNT`

  primitive code = [p4_zmove]

`ZPLACE``( addr* len zaddr* -- )``` => `[FORTH]`

  copy string and place as 0 terminated (see libc strncpy(3)) / see also `+ZPLACE` / `Z+PLACE`

  primitive code = [p4_zplace]

`+ZPLACE``( caddr* u zdest* -- )``` => `[FORTH]`

  Add the string defined by CADDR LEN to the zero terminated string at ZDEST - (for older scripts the `SYNONYM` named `APPENDZ` exists) (see libc strncat(3)) / compare with `ZPLACE` / `+PLACE`

  primitive code = [p4_appendz]

`S\"``( [backslashed-strings_<">] -- str cnt )``` => `[FORTH]`

  scan the following text to create a literal just like `S"` does, but backslashes can be used to escape special chars. The rules for the backslashes follow C literals, implemented techniques are \n \r \b \a \f \v \e \777 and all non-alnum chars represent themselves, esp. \" \' \ \? \! \% \( \) \[ \] \{ \} etcetera. most importantly the doublequote itself can be escaped. but be also informed that the usage of \' and \" is not portable as some systems preferred to map [\'] into ["]. Here I use the experimental addition to map [\q] to ["] and [\i] to [']

  compiling word = [p4_s_backslash_quote]

`C\"``( [backslashed-strings_<">] -- bstr* )``` => `[FORTH]`

  scan the following text to create a literal just like `C"` does, but backslashes can be used to escape special chars. The rules for the backslashes follow C literals, implemented techniques are \n \r \b \a \f \v \e \777 and all non-alnum chars represent themselves, esp. \" \' \ \? \! \% \( \) \[ \] \{ \} etcetera. most importantly the doublequote itself can be escaped. but be also informed that the usage of \' and \" is not portable as some systems preferred to map [\'] into ["]. Here I use the experimental addition to map [\q] to ["] and [\i] to [']

  compiling word = [p4_c_backslash_quote]

`Z\"``( [backslashed-strings_<">] -- zstr* )``` => `[FORTH]`

  scan the following text to create a literal just like `Z"` does, but backslashes can be used to escape special chars. The rules for the backslashes follow C literals, implemented techniques are \n \r \b \a \f \v \e \777 and all non-alnum chars represent themselves, esp. \" \' \ \? \! \% \( \) \[ \] \{ \} etcetera. most importantly the doublequote itself can be escaped but be also informed that the usage of \' and \" is not portable as some systems preferred to map [\'] into ["]. Here I use the experimental addition to map [\q] to ["] and [\i] to [']

  compiling word = [p4_z_backslash_quote]