public void DefineMacro(string ch, ReadtableHandler2 handler2, CharacterType type = CharacterType.TerminatingMacro) { var item = GetEntry(ch[0], true); item.Handler = null; item.Handler2 = handler2; item.Type = type; }
public static void SetDispatchMacroCharacter(string dispatchChar, string subChar, IApply handler, params object[] kwargs) { ReadtableHandler2 proc = (reader, ch, arg) => { var stream = reader.Stream; return(Funcall(handler, stream, ch, arg)); }; SetDispatchMacroCharacter(dispatchChar, subChar, proc, kwargs); }
public void SetDispatchMacroCharacter(string ch1, string str2, ReadtableHandler2 handler2) { var item = GetEntry(ch1[0], true); if (item.DispatchReadtable == null) { item.DispatchReadtable = new SortedList <string, ReadtableHandler2>(new ReverseOrder()); } item.Type = CharacterType.TerminatingMacro; item.DispatchReadtable.Add(str2, handler2); }
public static void SetDispatchMacroCharacter(string dispatchChar, string subChar, ReadtableHandler2 handler, params object[] kwargs) { var args = ParseKwargs(kwargs, new string[] { "readtable" }, GetReadtable()); var readtable = (Readtable)args[0]; readtable.SetDispatchMacroCharacter(dispatchChar, subChar, handler); }