public Set GetInitialState() { Rule initialRule = new Rule(new InitialNonTerminal(((Rule)rules[0]).GetSymbol().ToString())); initialRule.AddSymbol(((Rule)rules[0]).GetSymbol().Duplicate()); Set initialSet = new Set(this); initialSet.AddRule(initialRule); foreach(Rule rule in rules){ initialSet.AddRule(rule.Duplicate()); } return initialSet; }
public Rule Duplicate() { Rule duplicateRule = new Rule(this.symbol.Duplicate()); foreach(ISymbol ruleSymbol in ruleSymbols){ if (ruleSymbol.IsEndSymbol()) continue; duplicateRule.AddSymbol(ruleSymbol.Duplicate()); } duplicateRule.SetParsePosition(this.parsePosition); duplicateRule.ruleNumber = ruleNumber; return duplicateRule; }