Change log for parsing.fs and parsing-test.fs. Unattributed changes are by the initial author/modifier, David N. Williams. The revision date(s) in the source files may be more recent than the most recent date here, when only cosmetic changes have been made. Version 1.0.0 18Oct10 * Fixed S-SEPARATE to work around SEARCH ambiguity for empty pat.s. * Updated comments. 19Oct10 * Updated host conditionals and ttester-display in parsing-test.fs. 22Oct10 * Added comment to parsing-test noting that exhaustion of the parse area for empty string output by PARSE-NAME is tested. * Made PARSE-NAME compilation conditional. The native pfe and gforth versions pass the tests. Added an IFORTH-HOST switch for cases in parsing-test where the iForth version produces an empty string but not the right empty string, which is legal. 26Oct10 * Added {}INDEX and tests. Rearranged grouping of tests. Version 0.8.4 5Apr08 * Added {}PARSE, with tests. 27Apr10 * Noted that Wil Baden's Tool Belt is really public domain. Replaced "ToolBelt" by "Tool Belt". 5Aug10 * Updated ANSI color support to 1.0.1 in parsing-test.fs. * Removed conditional compilation for "((" and "---" tests in parsing-test.fs, and used special test names "t((" and "t---". Also avoids a name clash with iForth's "((". Version 0.8.3 24Jul08 * Bumped version to 0.8.3 to agree with mstrings.fs. 30Jul08 * Restored PARSE-NAME-AWAY. It's only a two-word definition, but it's an essential companion to PREPARSE-NAME. * Added PARSING-LIB-S library string. 31Jul08 * Added tests for input stream position after: PARSE-NAME PARSE-NAME-AWAY NEXT-INSTREAM-NAME |S|-SEEK-INSTREAM They discriminate against a one-off bug found in the first three in parsing-ext.c (but not in parsing.fs) by testing with dstrings.fs. * Made specs more explicit about parsing away the first trailing whitespace delimiter in the first three words above. 20Nov08 * Revised parsing-test.fs to use ttester.fs, gforth cvs revision 1.13, instead of tester-plus.fs. Added conditional ANSI terminal color modes. 26Nov08 * Comment tweaks. Removed commented out char impure lines. 27Feb09 * Added to "Not implemented" list: {}PARSE S-PARSE PARSE-AWAY {}PARSE-AWAY 22Mar09 * Removed comment about tests that use SEARCH with the empty string as pattern, because Ed pointed out that SwiftForth now agrees with common practice. Removed the corresponding SEARCH tests from parsing-test.fs, but it doesn't actually use SEARCH at all! Version 0.8.2 18Jun08 * Bumped minor version number to 8 to agree with mstrings.fs. * Removed ALLOW-EMBEDDED-WHITE switch and moved WHITE-DELIMITED? to string extensions section. All searches allow embedded whitespace. * Started making parsing.fs character clean, including comments. * Added specification for some words that empty search patterns are found. 19Jun08 * Added utility words CHARS+ and CHAR/. 21Jun08 * Finished character cleaning, including tests, just by inspection; don't have a good test for character purity. * Added empty string tests for SEARCH and WHITE-DELIMITED, and cleaned S-SEPARATE tests to assume the empty pattern behavior in the SEARCH tests. 22Jun08 * Removed ALLOW-EMBEDDED-WHITE from tests. 23Jun08 * Added table of contents. * Added WHITE? tests. * Added S-SCAN-INPUT and S-INPUT-AFTER tests with embedded whitespace. 24Jun08 * Changed the terminology "buf" and "/buf" to "cbuf" and "#cbuf", where #cbuf is characters, not address units. 27Jun08 * Cleaned up conditional loads in parsing-test.fs. 20Jul08 * Fixed END-C@, which was still not character clean. * Added SEEK, to inaugurate new naming scheme for words that scan past rather than to and also leave a flag. Added tests. * Rewrote |S|-INPUT-AFTER to use S-INPUT-AFTER, and S-INPUT-AFTER to avoid using S-SCAN-INPUT. * Renamed: {}SCAN-PAST as {}SEEK * Removed: PARSE-AWAY PARSE-NAME-AWAY S-SCAN-INPUT * Added utility word CHARS-. 21Jul08 * Renamed: old new NEXT-INPUT-NAME NEXT-INSTREAM-NAME S-INPUT-AFTER S-SEEK-INSTREAM |S|-INPUT-AFTER |S|-SEEK-INSTREAM STARTS? S-STARTS ENDS? S-ENDS {}STARTS? {}STARTS 22Jul08 * Added {}ENDS with tests. 24Jul08 * Improved code for >IN++ and >IN--. Version 0.7.1 8Apr08 * Added ?EMIT-CR, and revised NEXT-INPUT-NAME to use it. 9Apr08 * Revised remaining across-line words to use it, except for \\. * Removed all multiline "(...)" comments from parsing-test.fs, so it can be pasted into a terminal window for testing across-line words with terminal input. Revealed a problem with one of the |S|-INPUT-AFTER, tests, namely, tabs are not inserted into the input buffer when pasted into pfe's terminal, which removes whitespace around the target string so it's never found. Maybe because the pfe terminal intercepts tabs for autocompletion. Added a switch to replace the test with tabs by one with spaces in terminal mode. * Pasted tests don't work at all with gforth 0.6.9. Maybe pasted LF's don't act as expected. 10Apr08 * Tests work with gforth 0.6.2. * The test with tabs now works both in terminal and file mode, both in gforth and pfe. Can't reproduce the tab problem with pfe mentioned above. * Removed terminal mode switch from parsing-test.fs. Problem reappeared for pfe. Turns out the search was finding its target in the commented out version of the test with the switch. The conclusion so far is that gforth handles the tab correctly, and pfe doesn't. 14Apr08 * Added comments about pasting parsing-test.fs into a terminal window, and added DISALLOW-TAB-TEST switch. * Added test for ?EMIT-CR. 16Apr08 * Moved from parsing-test.fs to parsing.fs: CUT-FIRST, CUT-LAST, KEEP-FIRST, KEEP-LAST, * Fixed bug in NWTBF in parsing-test.fs. 18Apr08 * New tests: CUT-FIRST CUT-LAST KEEP-FIRST KEEP-LAST * Revised pfe /STRING switch in parsing-test.fs to test for negative index bug. * Released. Version 0.7.0 1Jul07 * Added S-SCAN-INPUT. 2Jul07 * Added conditionally defined 2RDROP, CHAR-, [VOID], [TRUE]. Why isn't [VOID] named as [FALSE]? * Rewrote S-INPUT-AFTER to use S-SCAN-INPUT. * Added WHITE-DELIMITED?, and |S|-INPUT-AFTER. * Rewrote (* to make its terminator whitespace delimited. The status of the (* RfD is "shelved": http://mips.complang.tuwien.ac.at/forth/ansforth/paren-star.txt 4Jul07 * Added tests for S-SCAN-INPUT, S-INPUT-AFTER, * Tightened input stream comments. * Added WHITE?, a synonym for Wil Baden's IS-WHITE, used in WHITE-DELIMITED? and elsewhere. We think the question mark always conveys the correct meaning, and there a cases where its absence does not. Added tests for WHITE-DELIMITED?. Versions with and without locals passed. 5Jul07 * Added switch for versions of |S|-INPUT-AFTER that work with and without embedded whitespace, and added tests. * Revised (* to abort on a missing terminator. * Improved >IN-- code. 6Jul07 * Added simple NEXT-INPUT-NAME empty tests, and parse-area boundary tests for >IN++ and >IN--. Removed corresponding blue comment caveats. Added false flag tests for S-SCAN-INPUT, S-INPUT-AFTER, and |S|-INPUT-AFTER, selectable by editing. * Added CUT-FIRST, CUT-LAST, KEEP-FIRST, KEEP-LAST, >IN+, +IN- to the list of words, marked as defined in parsing-test.fs. Candidates for promotion to parsing.fs. * Rewrote CUT-FIRST to avoid a bug in pfe's /STRING, which doesn't add characters when the top argument is negative. * Renamed TRIM as TRIM| and added |TRIM and |TRIM|, plus tests. * Updated parsing-words.txt. * Made source CHAR+ clean. Already CHAR- clean. 7Jul07 * Added PARSE-AREA-EMPTY? and test. 10Jul07 * Added conditional tests for normally commented-out (( and ---. * Released. Tested with pfe and gforth. Version 0.6.9 31Mar07 * Replaced (( by (*, including regressions. 2Apr07 * Added \\. Revised preamble to mention blocks. Version 0.6.8 9Sep06 * Skipped the version number from 0.5.1 to sync with the pfe external module parsing-ext.c. * SKIP-BACK made normally visible, removed from "uncommentable" status. * Added to not implemented list: {}SKIP, {}SKIP-PARSE, {}SKIP-INPUT, {}PARSE-AWAY, {}SCAN-INPUT, {}SCAN-INPUT-PAST. * Renamed S-INPUT-PAST as S-INPUT-AFTER. * Added compilation mode test for (( in parse-test.fs. 10Sep06 * Added test for S-INPUT-AFTER. 14Sep06 * Added tests for EMPTY-PARSE-AREA and PARSE-NAME. 15Sep06 * More tests for PARSE-NAME. Added tests for PARSE-AWAY, PREPARSE-NAME, >IN--, NEXT-INPUT-NAME, PARSE-NAME-AWAY. * No test for PARSE-AREA!, but all existing tests passed with pfe and gforth. 24Jan07 * Fixed stack comment in S-SEPARATE to include "true". 25Jan07 * Removed commmented out, old version of SEPARATE. Version 0.5.1 26Aug06 * Combined parsing-strings.fs and and parsing-input.fs. The log entries from parsing-strings.log and parsing-input.log are listed below under version 0.5.0. Fixed parsing-test.fs to work with parsing.fs 27Aug06 * Tidied up comments. 7Sep06 * Replaced tester.fs include by testerplus.fs in parsing-test.fs. Moved VERBOSE statement ahead of the first COMMENT. 8Sep06 * Added switch for selecting parsing.fs or pfe parsing. Version 0.5.0 (parsing-strings.log) 17Aug06 * Started with parsing.fs, based on earlier collection. 18Aug06 * Decided to follow Wil Baden's newer convention (ToolBelt 2002), to remove BL prefixed words and deal with whitespace conditionally. * Added STRING/, /SPLIT, SKIP, SCAN, [FALSE], [TRUE]. 19Aug06 * Added SKIP-BACK, TRIM, SCAN-BACK, SEPARATE, STARTS?, ENDS?. * Tentatively added END-C@. * Started parsing-strings-test.fs. Still a few words included so far untested. SCAN-BACK failed. 20Aug06 * Added tests for 2000 and 2002 BACK, which passed. Fixed bug in SCAN-BACK. * Adopted an abstract empty string spec for skips and scans, while actually implementating the Tool Belt spec. * Added tests for STARTS? and ENDS?. Fixed bugs revealed in both. Everything except SEPARATE tested. 21Aug06 * Added tests for SEPARATE, which failed. Added conditional compilation of an old implementation of SEPARATE, which passed. Fixed the new implementation. * Added {}IN?, {}SCAN, {}SCAN-PAST, and tests, which passed. 22Aug06 * Renamed {}IN? as IN{}?. * Removed [FALSE], [TRUE]. * Removed }S from tests. * Unadopted abstract empty string spec. Too much documentation and testing trouble. * Added {}SEPARATE, S-SEPARATE and tests, which passed. * Added S-AFTER, S-FIRST-WORD, and S-PARSE-WORD. 23Aug06 * Added tests for S-AFTER, S-FIRST-WORD, and S-PARSE-WORD, which passed. * Added conditional compilation for -ROT and RDROP. * Renamed IN{}? as {}IN, its original name, and restored the original spec that it acts as a char filter. * Added {}STARTS? with tests, which passed. * Changed name of S-PARSE-WORD to SEPARATE-WORD. * Renamed parsing-strings-test.fs as parsing-test.fs. We'll use the same test file for parsing-strings.fs and parsing-input.fs. 24Aug06 * Renamed S-FIRST-WORD as FIRST-WORD. Version 0.5.0 (parsing-input.fs) 17Aug06 * Started with parsing.fs, based on earlier collection. 18Aug06 * Split into parsing-strings.fs and parsing-input.fs. So far, parsing-input.fs contains only SKIP-PAST and ((. 23Aug06 * Added PARSE-AREA@, PARSE-AREA!, and EXHAUST-INPUT. * Recoded SKIP-PAST to use /STRING and PARSE-AREA!. Added test for ((, which passed. 24Aug06 * Added SKIP-IN, >IN++, >IN--, PARSE-WORD, PRE-PARSE, SKIP-WORD, NEXT-WORD * Renamed: EXHAUST-INPUT as EMPTY-PARSE-AREA SKIP-IN as PARSE-AWAY SKIP-PAST as S-INPUT-PAST PARSE-WORD as PARSE-NAME PREPARSE as PREPARSE-NAME SKIP-WORD as PARSE-NAME-AWAY NEXT-WORD as NEXT-INPUT-NAME