Merge pull request #75 from SeekingMeaning/0BSD
[pforth] / fth / wordslik.fth
CommitLineData
8e9db35f
PB
1\ @(#) wordslik.fth 98/01/26 1.2
2\
3\ WORDS.LIKE ( <string> -- , search for words that contain string )
4\
5\ Enter: WORDS.LIKE +
6\ Enter: WORDS.LIKE EMIT
7\
8\ Author: Phil Burk
1a088514 9\ Copyright 1994 3DO, Phil Burk, Larry Polansky, David Rosenboom
8e9db35f 10\
1f99f95d
S
11\ Permission to use, copy, modify, and/or distribute this
12\ software for any purpose with or without fee is hereby granted.
13\
14\ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
15\ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
16\ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
17\ THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
18\ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
19\ FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
20\ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
21\ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
8e9db35f
PB
22
23anew task-wordslik.fth
24decimal
25
26
27: PARTIAL.MATCH.NAME ( $str1 nfa -- flag , is $str1 in nfa ??? )
28 count $ 1F and
29 rot count
30 search
31 >r 2drop r>
32;
33
34: WORDS.LIKE ( <name> -- , print all words containing substring )
35 BL word latest
36 >newline
37 BEGIN
38 prevname dup 0<> \ get previous name in dictionary
39 WHILE
40 2dup partial.match.name
41 IF
42 dup id. tab
43 cr?
44 THEN
45 REPEAT 2drop
46 >newline
47;