Example #1
0
        public void LoadFlyBinaryFile(String flyBinFileName, out List <NavData> navDataList, out List <AngleData> angleDataList,
                                      out List <ProgramControlData> programControlDataList, out List <ServoData> servoDataList)
        {
            navDataList            = new List <NavData>();
            angleDataList          = new List <AngleData>();
            programControlDataList = new List <ProgramControlData>();
            servoDataList          = new List <ServoData>();

            if (!File.Exists(flyBinFileName))
            {
                return;
            }

            FlyParser flyParser = new FlyParser();

            using (FileStream fileStream = File.Open(flyBinFileName, FileMode.Open))
            {
                BinaryReader binaryReader = new BinaryReader(fileStream);
                while (binaryReader.BaseStream.Position <= binaryReader.BaseStream.Length - 1)
                {
                    byte[]        buffer  = binaryReader.ReadBytes(Marshal.SizeOf(typeof(FlyPacket)));
                    List <byte[]> buffer1 = flyParser.ParseData1(buffer);
                    for (int i = 0; i < buffer1.Count; ++i)
                    {
                        flyParser.ParseData2(buffer1[i], out List <NavData> _navDataList, out List <AngleData> _angleDataList,
                                             out List <ProgramControlData> _programControlDataList, out List <ServoData> _servoDataList);
                        navDataList.AddRange(_navDataList);
                        angleDataList.AddRange(_angleDataList);
                        programControlDataList.AddRange(_programControlDataList);
                        servoDataList.AddRange(_servoDataList);
                    }
                }
            }
        }
Example #2
0
        public static (Instructions Instructions, CodeContexts Contexts) ParseFile(string file)
        {
            var lexer    = new FlyLexer(new AntlrFileStream(file));
            var parser   = new FlyParser(new CommonTokenStream(lexer));
            var listener = new Listener();

            listener.EnterProgram(parser.program());
            return(listener.Code.Instructions, listener.Code.Contexts);
        }
Example #3
0
            public void Run()
            {
                while (true)
                {
                    Console.Write(">>> ");
                    var input = ReadInput();
                    var lexer = new FlyLexer(new AntlrInputStream(input));
                    try
                    {
                        _prev = (Listener)listener.Clone();
                        var parser = new FlyParser(new CommonTokenStream(lexer))
                        {
                            ErrorHandler = new BailErrorStrategy()
                        };
                        listener.EnterProgram(parser.program());
                    }
                    catch (Exception e)
                    {
                        listener = _prev;
                        Console.WriteLine(e.Message.Split('\n').First());
                    }

                    if (vm == null)
                    {
                        vm = new VirtualMachine(listener.Code.Instructions, listener.Code.Contexts, In, Out);
                    }
                    else
                    {
                        vm.Instructions  = listener.Code.Instructions;
                        vm.DebugContexts = listener.Code.Contexts;
                    }

                    vm.constants = new StringConstants(listener.Code.Instructions.StringConstants.ToArray());
#if !DEBUG
                    try
                    {
#endif
                    var res = vm.EvalRun();
                    Console.WriteLine(res);
#if !DEBUG
                }
                catch (Exception e)
                {
                    Console.WriteLine("ERROR: " + e.Message);
                }
#endif
                }
            }
Example #4
0
        public void TestStatements()
        {
            var cases = new[]
            {
                "test = 5;",
                "if true { print(0); } elif false { print(1); } else { print(2); }",
                "b = box (a) { return a; }",
                "a, b = 5, 4;",
            };

            foreach (var @case in cases)
            {
                var lexer = new FlyLexer(new AntlrInputStream(@case));

                var parser = new FlyParser(new CommonTokenStream(lexer));
                // parser.ErrorHandler= new BailErrorStrategy();
                var p = parser.program();
                Assert.True(p != null);

                // var listener = new Listener();
                // listener.EnterProgram(parser.program());
            }
        }