Poor man's syntax highlighting
Before getting to the more complex scenarios of creating professional DSL, I wanted to start by showing how you can easily create your own syntax highlighting.
This was the result:

And this is the actual code that makes this happens:
private void codeTextBox_TextChanged(object sender, EventArgs e)
{
int prevSelectionStart = codeTextBox.SelectionStart;
int prevSelectionLength = codeTextBox.SelectionLength;
codeTextBox.SelectionStart = 0;
codeTextBox.SelectionLength = codeTextBox.TextLength;
codeTextBox.SelectionColor = DefaultForeColor;
var keyWords = new[] { "specification", "requires", "users_per_machine", "same_machine_as" };
foreach (string keyWord in keyWords)
{
MatchCollection matches = Regex.Matches(codeTextBox.Text, keyWord);
foreach (Match match in matches)
{
codeTextBox.SelectionStart = match.Index;
codeTextBox.SelectionLength = match.Length;
codeTextBox.SelectionColor = Color.DarkOrchid;
}
}
foreach (Match match in Regex.Matches(codeTextBox.Text, @"@[\w\d_]+"))
{
codeTextBox.SelectionStart = match.Index;
codeTextBox.SelectionLength = match.Length;
codeTextBox.SelectionColor = Color.DarkSeaGreen;
}
foreach (Match match in Regex.Matches(codeTextBox.Text, @" \d+"))
{
codeTextBox.SelectionStart = match.Index;
codeTextBox.SelectionLength = match.Length;
codeTextBox.SelectionColor = Color.DarkRed;
}
codeTextBox.SelectionStart = prevSelectionStart;
codeTextBox.SelectionLength = prevSelectionLength;
}
The code in the book comes with the following warning:
The code suffers from multiple bugs, issues and is generally not suited for anything but the simplest scenarios.