private void WriteMatchers(Grammar grammar, IndentedTextWriter output)
{
output.WriteLine("// Scanner Conditions: ");
output.WriteLine();
foreach (var condition in grammar.Conditions)
{
output.WriteLine("condition {0}", condition.Name);
output.WriteLine("{");
++output.Indent;
foreach (var matcher in condition.Matchers)
{
var transition = matcher.NextCondition == null
? ""
: string.Format("{{goto {0}}}", matcher.NextCondition.Name);
output.WriteLine(
"{0} {1}: /{2}/;",
Name(matcher.Outcome),
transition,
matcher.Pattern);
}
--output.Indent;
output.WriteLine("}");
output.WriteLine();
}
}