A collection of recognizers
- raw README.md
- raw Recognizer.4th
- raw Stack.4th
- raw literacy.4th
- raw package.4th
- raw rec-double-paren.4th
- raw rec-name.4th
- raw rec-notfound.4th
- raw rec-num.4th
- raw rec-string.4th
- raw rec-time.4th
- raw rec-word.4th
Matthias Trute email@example.com Version 1.4.1 - 2016-10-15
This package is a collection of recognizer examples. To play with them a simple implementation for (old) gforth and VFX is included. These words are not (yet) able to compile code or are otherwise integrated into the underlying system.
Many examples contain test units that illustrate what the recognizer does.
This file in combination with
Stack.4th gives a
playground for making experiments with recognizers. It
has been tested with gforth versions that currently
come with the linux distributions and MPE's vfxlin (a
random old version from 2014).
This file contains four recognizers. They deal with
numbers in various formats and use
>NUMBER for the
actual number conversion.
rec:char ( addr len -- n r:num | r:fail)
Forth 2012 defined the 'c' syntax for single characters.
That means that
char c or
[char] c can be replaced
rec:snum ( addr len -- n r:num | r:fail)
This recognizer can handle single cell numbers. It honors the number prefixes and the sign characters + and - in any order.
rec:dnum ( addr len -- d r:dnum | r:fail)
This recognizer handles double cell numbers. It accepts the standard number format: digits with a trailing dot in addition to the prefix and sign character.
These three recognizers are combined in the
recognizer that may be used to handle all number formats
in one call.
This file contains a dictionary lookup recognizer. It uses
FIND for the actual work thus uses the search order if
Another dictionary lookup recognizer. This one does not
FIND and searches the standard forth wordlist
only. It returns name tokens instead of the usual
execution tokens as well.
TRAVERSE-WORDLIST and the
from Forth 2012 to work. From the future, quotations are
" as string delimiters. Everything
SOURCE) is a string.
It can replace the forth command
S" foo" use
"foo". The space
S" is no longer needed, it is now part
of the string.
S" foo" and
differ with the leading space in the latter.
The string lives as long as
unchanged! More sophisticated implementations
may use a string stack. Compilation is to the
dictionary as an
throws an exception simply because that
is not specified in the standard.
This is not really a recognizer but an API wrapper for
the often found
not-found hook. It discards any input
and calls a deferred word
not-found. This word is
expected to never return properly by e.g. printing an
error message and throwing an exception.
With this recognizer as the last one in the stack, programs that use the not-found hook can easily adapted.
Implements the multiline
)) comment block.
(( switches the system recognizer stack to
one that searches only one otherwise hidden wordlist.
This wordlist contains only words that are allowed
to be executed in comments. For now only
switches back to normal operation.
Since the recognizer stack switch is unaffected from
REFILL operations, multiline comments work too.
This recognizer needs a system that has recognizers native support. Some tests are provided.
Simple formatting of source code in the spirit von Don Knuth' literate programming. You can combine the real source code and its documentation in one file that the standard forth interpreter can handle directly.
Actually testing this recognizer requires a Forth that supports recognizers already.
Author: Julian Fondren, 2014 License: probably public domain.
check and convert for the hh:mm:ss notation returning a double cell number for the number of seconds it represents.