Email addresses are of the form host@domain, where domain is a "." followed by a three-letter domain name, and host can contain letters, digits, and one or more "-", such as dtrump@whitehouse.org. We can build a pattern from the ground up to describe the components of an email pattern, like this:
digit: charset "0123456789"letter: charset [#"a" - #"z" #"A" - #"Z"]dash: charset "-"email-char: union union letter dash digitemail-word: [some email-char]host: [email-word]domain: [email-word some [dot email-word]]email: [host "@" domain]parse "dtrump@whitehouse.org" email ;== trueparse "john-locke@lost.island.org" email ;== true
You can see how parse can be used to gradually build a kind of mini-language or DSL (domain-specific ...