Пример #1
0
        private static void Main(string[] args)
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

            DustContext         context  = new DustContext();
            DustRuntimeCompiler compiler = new DustRuntimeCompiler(context);

            string input;

            while ((input = Console.ReadLine()) != "exit")
            {
                AntlrInputStream  inputStream       = new AntlrInputStream(input);
                DustLexer         lexer             = new DustLexer(inputStream);
                CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
                DustParser        parser            = new DustParser(commonTokenStream);
                DustVisitor       visitor           = new DustVisitor(context);
                Module            module            = (Module)visitor.VisitModule(parser.module());

                object result = compiler.Compile(module).Value;

                bool hasErrored = false;

                foreach (Error error in context.ErrorHandler.Errors)
                {
                    hasErrored = true;

                    Console.WriteLine(error);
                }

                if (result != null && hasErrored == false)
                {
                    Console.WriteLine(result);
                }
            }
        }
Пример #2
0
        public void loadSrc(DustVisitTray src)
        {
            base.loadSrc(src);

            this.visitor = src.visitor;
            this.cmd     = src.cmd;
            this.result  = src.result;
        }
        private static Statement ParseStatements(string input)
        {
            AntlrInputStream  inputStream       = new AntlrInputStream(input);
            DustLexer         lexer             = new DustLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            DustParser        parser            = new DustParser(commonTokenStream);
            DustVisitor       visitor           = new DustVisitor(new DustContext());

            return(((Module)visitor.VisitModule(parser.module())).Statements.First());
        }
Пример #4
0
        private static object Compile(string input)
        {
            AntlrInputStream  inputStream       = new AntlrInputStream(input);
            DustLexer         lexer             = new DustLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            DustParser        parser            = new DustParser(commonTokenStream);
            DustVisitor       visitor           = new DustVisitor(new DustContext());

            DustRuntimeCompiler compiler = new DustRuntimeCompiler(new DustContext());

            return(compiler.CompileModule((Module)visitor.VisitModule(parser.module())));
        }
Пример #5
0
        public static CompileResult <object> CompileFile(string text)
        {
            AntlrInputStream    inputStream       = new AntlrInputStream(text);
            DustLexer           lexer             = new DustLexer(inputStream);
            CommonTokenStream   commonTokenStream = new CommonTokenStream(lexer);
            DustParser          parser            = new DustParser(commonTokenStream);
            DustContext         context           = new DustContext();
            DustVisitor         visitor           = new DustVisitor(context);
            DustRuntimeCompiler compiler          = new DustRuntimeCompiler(context);

            Module module = (Module)visitor.VisitModule(parser.module());

            return(compiler.Compile(module));
        }
        public DustProcVisitProcess(DustSession session, DustInfoTray tray)
        {
            this.session        = session;
            this.infoTray       = tray;
            this.visitTray      = tray as DustVisitTray;
            callbackTray        = (null == visitTray) ? new DustVisitTray(tray, null) : new DustVisitTray(visitTray);
            callbackTray.entity = session.resolveEntity(tray.entity);

            empty = true;

            dip = tray.value as DustInfoProcessor;
//			dif = tray.value as DustInfoFilter;
            dvp = tray.value as DustVisitor;
        }
Пример #7
0
 public DustVisitTray(DustInfoTray src, DustVisitor visitor)
     : base(src)
 {
     this.visitor = visitor;
     value        = visitor;
 }
Пример #8
0
 public DustVisitTray(DustEntity eRoot, DustVisitor visitor)
     : base(eRoot)
 {
     this.visitor = visitor;
     value        = visitor;
 }