예제 #1
0
 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;
 }
예제 #2
0
 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;
 }