/// <summary> /// Reloads the definition of the program /// </summary> private void ReloadDefinition() { lock (runCounterLock) { executionWait.Reset(); while (currentRuns > 0) { Monitor.Wait(runCounterLock); } } try { AntlrInputStream astr = null; if (!isStatic) { astr = new AntlrFileStream(fileName, Encoding.Default); } else { using (var r = new StreamReader(file, Encoding.Default)) { astr = new AntlrInputStream(r); } } //SingletonPredictionContext. Lexer lex = new ITVScriptingLexer(astr); ITVScriptingParser parser = new ITVScriptingParser(new CommonTokenStream(lex)); ErrorListener listener = new ErrorListener(); parser.RemoveErrorListeners(); parser.AddErrorListener(listener); //parser.AddParseListener(new ScriptErrorHandler()); program = parser.program(); runnable = parser.NumberOfSyntaxErrors == 0; suspectLine = listener.SuspectLine; errors = listener.GetAllErrors(); lastCompilation = DateTime.Now; } finally { executionWait.Set(); } }
/// <summary> /// initializes this expression holder /// </summary> /// <param name="expression">the expression that is being parsed</param> /// <param name="mode">the parsing mode of the expression</param> public ExpressionCompiler(string expression, ExpressionMode mode) { var lex = new ITVScriptingLexer(new AntlrInputStream(expression)); parser = new ITVScriptingParser(new CommonTokenStream(lex)); parser.RemoveErrorListeners(); parser.AddErrorListener(listener); //parser.ErrorHandler = new BailErrorStrategy(); object obj; if (mode == ExpressionMode.Expression) { obj = SingleExpression; } else { obj = Program; } Successful = parser.NumberOfSyntaxErrors == 0; SuspectLine = listener.SuspectLine; Errors = listener.GetAllErrors(); }