本文整理汇总了C#中BnfTerm.GetType方法的典型用法代码示例。如果您正苦于以下问题:C# BnfTerm.GetType方法的具体用法?C# BnfTerm.GetType怎么用?C# BnfTerm.GetType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BnfTerm
的用法示例。
在下文中一共展示了BnfTerm.GetType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CollectTermsRecursive
private void CollectTermsRecursive(BnfTerm term) {
// Do not add pseudo terminals defined as static singletons in Grammar class (Empty, Eof, etc)
// We will never see these terminals in the input stream.
// Filter them by type - their type is exactly "Terminal", not derived class.
if (term.GetType() == typeof(Terminal)) return;
if (_grammarData.AllTerms.Contains(term)) return;
_grammarData.AllTerms.Add(term);
NonTerminal nt = term as NonTerminal;
if (nt == null) return;
if (nt.Name == null) {
if (nt.Rule != null && !string.IsNullOrEmpty(nt.Rule.Name))
nt.Name = nt.Rule.Name;
else
nt.Name = "NT" + (_unnamedCount++);
}
if (nt.Rule == null) {
_language.Errors.Add("Non-terminal " + nt.Name + " has uninitialized Rule property.");
return;
}
//check all child elements
foreach (BnfTermList elemList in nt.Rule.Data)
for (int i = 0; i < elemList.Count; i++) {
BnfTerm child = elemList[i];
if (child == null) {
_language.Errors.Add("Rule for NonTerminal " + nt.Name + " contains null as an operand in position " + i.ToString() + " in one of productions.");
continue; //for i loop
}
//Check for nested expression - convert to non-terminal
BnfExpression expr = child as BnfExpression;
if (expr != null) {
child = new NonTerminal(null, expr);
elemList[i] = child;
}
CollectTermsRecursive(child);
}//for i
}//method