X-Git-Url: https://git.subgeniuskitty.com/pforth/.git/blobdiff_plain/b60d4a658481962a2d8f3024674977c94c1b93b6..f75485364a6ebbc1a166a6687503c003bfa97313:/csrc/pf_words.c diff --git a/csrc/pf_words.c b/csrc/pf_words.c index 68f7862..8fe2fd3 100644 --- a/csrc/pf_words.c +++ b/csrc/pf_words.c @@ -203,8 +203,11 @@ cell_t ffNumberQ( const char *FWord, cell_t *Num ) ** Compiler Support ***************************************************************/ -/* ( char -- c-addr , parse word ) */ -char * ffWord( char c ) +/* Skip whitespace, then parse input delimited by C. If UPCASE is true + * convert the word to upper case. The result is stored in + * gScratch. + */ +static char * Word ( char c, int Upcase ) { char *s1,*s2,*s3; cell_t n1, n2, n3; @@ -213,16 +216,16 @@ char * ffWord( char c ) s1 = gCurrentTask->td_SourcePtr + gCurrentTask->td_IN; n1 = gCurrentTask->td_SourceNum - gCurrentTask->td_IN; n2 = ffSkip( s1, n1, c, &s2 ); -DBUGX(("ffWord: s2=%c, %d\n", *s2, n2 )); +DBUGX(("Word: s2=%c, %d\n", *s2, n2 )); n3 = ffScan( s2, n2, c, &s3 ); -DBUGX(("ffWord: s3=%c, %d\n", *s3, n3 )); +DBUGX(("Word: s3=%c, %d\n", *s3, n3 )); nc = n2-n3; if (nc > 0) { gScratch[0] = (char) nc; for( i=0; itd_IN += (n1-n3) + 1; return &gScratch[0]; } + +/* ( char -- c-addr , parse word ) */ +char * ffWord( char c ) +{ + return Word( c, TRUE ); +} + +/* ( char -- c-addr , parse word, preserving case ) */ +char * ffLWord( char c ) +{ + return Word( c, FALSE ); +}