Building special languages

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 ...

Get Learn Red - Fundamentals of Red now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.