pfe-zchar-ext ? ZCHAR-EXT - zero-terminated C-like charstrings
Z" ( [chars<">] -- z* ) ?=>? ( | ); | ? |
[FORTH];ZCOUNT ( z* -- z* len ) ?=>? ( | ); | ? |
[FORTH];ZSTRLEN ( z* -- len ) ?=>? ( | ); | ? |
[FORTH];ZMOVE ( zsrc* zdest* -- ) ?=>? ( | ); | ? |
[FORTH];ZPLACE ( addr* len zaddr* -- ) ?=>? ( | ); | ? |
[FORTH];+ZPLACE ( caddr* u zdest* -- ) ?=>? ( | ); | ? |
[FORTH];S\" ( [backslashed-strings_<">] -- str cnt ) ?=>? ( | ); | ? |
[FORTH];C\" ( [backslashed-strings_<">] -- bstr* ) ?=>? ( | ); | ? |
[FORTH];Z\" ( [backslashed-strings_<">] -- zstr* ) ?=>? ( | ); | ? |
[FORTH];
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 ALLOTed into the dictionary.
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
ZSTRLEN ( z* -- len ) => [FORTH]
push length of z-string.
: ZSTRLEN ZCOUNT NIP ;
(see libc strlen(3)) / compare with ZMOVE / CMOVE
ZMOVE ( zsrc* zdest* -- ) => [FORTH]
copy a zero terminated string
(see libc strcpy(3)) / compare with ZSTRLEN / COUNT
ZPLACE ( addr* len zaddr* -- ) => [FORTH]
copy string and place as 0 terminated
(see libc strncpy(3)) / see also +ZPLACE / Z+PLACE
+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
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 [']
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 [']
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 [']