protected RCValue DoParse(RCParser parser, RCString right, bool canonical, out bool fragment) { RCArray <RCToken> tokens = new RCArray <RCToken> (); for (int i = 0; i < right.Count; ++i) { parser.Lex(right[i], tokens); } RCValue result = parser.Parse(tokens, out fragment, canonical); return(result); }
public void EvalParse(RCRunner runner, RCClosure closure, RCSymbol left, RCString right) { RCParser parser = null; bool canonical = false; string which = left[0].Part(0).ToString(); if (which.Equals("csv")) { parser = new CSVParser(); } else if (which.Equals("xml")) { parser = new XMLParser(); } else if (which.Equals("json")) { parser = new JSONParser(); } else if (which.Equals("rcl")) { parser = new RCLParser(RCSystem.Activator); } else if (which.Equals("canonical")) { parser = new RCLParser(RCSystem.Activator); canonical = true; } else if (which.Equals("log")) { parser = new LogParser(); } else if (which.Equals("md")) { parser = new MarkdownParser(); } else { throw new Exception("Unknown parser: " + which); } bool fragment; RCValue result; try { result = DoParse(parser, right, canonical, out fragment); runner.Yield(closure, result); } catch (RCSyntaxException ex) { throw new RCException(closure, ex, RCErrors.Syntax, ex.Message); } }
public RCRunner(long workers) { _ctorThread = Thread.CurrentThread; _bots[0] = new RCBot(this, 0); _output[0] = new Queue <RCAsyncState> (); _parser = new RCLParser(RCSystem.Activator); Console.CancelKeyPress += HandleConsoleCancelKeyPress; for (int i = 0; i < workers; ++i) { Thread worker = new Thread(Work); worker.IsBackground = true; _workers.Write(worker); worker.Start(); } }
public void Reset() { // Should I take the locks here? One or both? Both. lock (_queueLock) { lock (_botLock) { _parser = new RCLParser(RCSystem.Activator); _root = null; _result = null; _exception = null; _exceptionClosure = null; _exceptionCount = 0; _queue = new Queue <RCClosure> (); _pending = new Dictionary <long, Dictionary <long, RCClosure> > (); _bot = 1; _bots = new Dictionary <long, RCBot> (); _bots[0] = new RCBot(this, 0); _output[0] = new Queue <RCAsyncState> (); ++_reset; } } }
public override void Accept(RCParser parser, RCToken token) { parser.AcceptColumnData(token); }
public override void Accept(RCParser parser, RCToken token) { parser.AcceptXmlBracket(token); }
public override void Accept(RCParser parser, RCToken token) { parser.AcceptTime(token); }
public override void Accept(RCParser parser, RCToken token) { parser.AcceptReference(token); }
/// <summary> /// Is this the right spot for a visitor? not really sure... /// </summary> public abstract void Accept(RCParser parser, RCToken token);
public override void Accept(RCParser parser, RCToken token) { parser.AcceptLiteral(token); }
public override void Accept(RCParser parser, RCToken token) { parser.AcceptEvaluator(token); }
public override void Accept(RCParser parser, RCToken token) { parser.AcceptBoolean(token); }
public override void Accept(RCParser parser, RCToken token) { parser.AcceptNumber(token); }
public override void Accept(RCParser parser, RCToken token) { parser.AcceptString(token); }
public override void Accept(RCParser parser, RCToken token) { parser.AcceptContent(token); }