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
]