public override void Init(GrammarData grammarData) { base.Init(grammarData); // convert strings to terminals, if needed FirstTerminal = FirstTerminal ?? Grammar.ToTerm(FirstString); if (OtherTerminals.Count == 0 && OtherStrings.Count > 0) { Array.ForEach(OtherStrings.Select(s => Grammar.ToTerm(s)).ToArray(), term => OtherTerminals.Add(term)); } }
public override void Init(GrammarData grammarData) { base.Init(grammarData); // convert strings to terminals, if needed _firstTerminal = _firstTerminal ?? Grammar.ToTerm(_firstString); if (_beforeStrings.Count > 0) { //SL pukes here, it does not support co/contravariance in full, we have to do it long way foreach (var s in _beforeStrings) { _beforeTerminals.Add(Grammar.ToTerm(s)); } } //Build description var beforeTerms = string.Join(" ", _beforeTerminals.Select(t => t.Name)); _description = string.Format("{0} if {1} comes before {2}.", _actionType, _firstTerminal.Name, beforeTerms); }