예제 #1
0
        internal static DynamicExprExpression LoadDynamicExpr(Script script, SourceCode source)
        {
            AntlrErrorListener listener = new AntlrErrorListener(source);

            try
            {
                LuaParser parser = CreateParser(script, new AntlrInputStream(source.Code), source.SourceID, p => p.dynamicexp(), listener);

                ScriptLoadingContext lcontext = CreateLoadingContext(script, source);
                lcontext.IsDynamicExpression = true;
                lcontext.Anonymous           = true;

                DynamicExprExpression stat;

                using (script.PerformanceStats.StartStopwatch(Diagnostics.PerformanceCounter.AstCreation))
                    stat = new DynamicExprExpression(parser.dynamicexp(), lcontext);

                return(stat);
            }
            catch (ParseCanceledException ex)
            {
                HandleParserError(ex, listener);
                throw;
            }
        }