我创建了一个可以按规则检查语法规则的函数。如果规则包含一个低位字符和一个大写字符(例如:aB),或只包含一个小写字符(例如:a)。还有别的错。所以语法看起来像这样:
S→a|aA
A→bB|b
B→b|a
左侧始终是大写字母。正确的是我之前写的两种。我想检查右侧。
EDIT 这是代码:
public bool isCorrectGram(List<string> rules)
{
Regex rgx=new Regex("^[a-z][A-Z]$");
Regex rgx2 = new Regex("^[a-z]$");
System.Windows.Forms.MessageBox.Show(rules.Count.ToString());
foreach(string line in rules)
{
List<string> temp = line.Split('|', '→').ToList<string>();
for (int i = 1; i < temp.Count;i++ )
{
System.Windows.Forms.MessageBox.Show(temp[i]);
if (!(rgx.IsMatch(temp[i])||rgx2.IsMatch(temp[i])))
{
return false;
}
}
}
return true;
}