public void Lock() { AssertIsNotLocked(); DefineRule(RuleName.Implicit, new RepeatRule(this, new OrRule(this, ImplicitNames .Select(_GetRule) .Where(r => r != null)))); AttachAction(RuleName.Implicit, (n, r) => null); IsLocked = true; }
private void DefineToken(string name, Token token) { AssertIsNotLocked(); tokens.Add(name, token); Rule rule = new TokenRule(this, token); if (!ImplicitNames.Contains(name)) { rule = new NameRule(this, this, RuleName.Implicit).And(rule); } DefineRule(name, rule); }