Contents:

1. Introduction

This file just collects a number of charsets and parse rules that are commonly used in other modules.

2. Overview

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
]