Example #1
0
        /// <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();
            }
        }
Example #2
0
            /// <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();
            }