Defines a number of common charsets and PARSE rules.
This file just collects a number of charsets and parse rules that are commonly used in other modules.
Charsets that are very useful for string parsing:
〈Overview〉 ≡
ascii-char: charset [#"^@" - #"^~"]
html-special-char: charset {"&<>}
alpha-char: letter: charset [#"A" - #"Z" #"a" - #"z"]
space-char: charset " ^/^-"
digit: charset "1234567890"
hexdigit: charset "1234567890abcdefABCDEF"
ascii-minus-html-special: exclude ascii-char html-special-char
utf8-seq2: charset [#"" - #""]
utf8-seq3: charset [#"" - #""]
utf8-seq4: charset [#"" - #""]
utf8-seq: charset [#"" - #""]
letter*: union letter charset "_"
alphanum: union alpha-char digit
letter+: union union letter digit charset ".-_"
name: [letter* any letter+]
Some useful rules for block parsing:
〈Overview〉 +≡
do-next: make-rule [
"Evaluate the next value, push result to the stack"
/local here value
] [
here: skip (
set [value here] do/next here
push-result :value
) :here
]