public void SetDelimiters(char openDelimiter, char closeDelimiter) { GroupHighlighterATNSimulator interpreter = Interpreter; if (interpreter.OpenDelimiter == openDelimiter && interpreter.CloseDelimiter == closeDelimiter) { return; } _interp = GetSimulatorForDelimiters(openDelimiter, closeDelimiter); Interpreter.CopyState(interpreter); }
private GroupHighlighterATNSimulator GetSimulatorForDelimiters(char openDelimiter, char closeDelimiter) { ATN atn = GetATNForDelimiters(openDelimiter, closeDelimiter); lock (_atnToSimulator) { GroupHighlighterATNSimulator simulator; if (!_atnToSimulator.TryGetValue(atn, out simulator)) { simulator = new GroupHighlighterATNSimulator(this, atn, openDelimiter, closeDelimiter); _atnToSimulator[atn] = simulator; } return(simulator); } }