Exemple #1
0
        public void ParserConstantValueE()
        {
            var stream = new CommandStream()
            {
                Line = "E"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(Math.E);
        }
Exemple #2
0
        public void ParserAssignVariable()
        {
            var stream = new CommandStream()
            {
                Line = "VAR=1"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(1);
        }
Exemple #3
0
        public void ParserSign()
        {
            var stream = new CommandStream()
            {
                Line = "SIGN(-100)+SIGN(30)+SIGN(0)+SIGN(234.32)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(1.0);
        }
Exemple #4
0
        public void ParserLog()
        {
            var stream = new CommandStream()
            {
                Line = "LOG(2)+LOG10(10)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(2.0);
        }
Exemple #5
0
        public void ParserSqrtFractional()
        {
            var stream = new CommandStream()
            {
                Line = "SQRT(9)+FACTORIAL(2)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(5);
        }
Exemple #6
0
        public void ParserASinACosATan()
        {
            var stream = new CommandStream()
            {
                Line = "ASIN(1.0)+ACOS(1.0)+ATAN(1.0)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(2.3561944901923448);
        }
Exemple #7
0
        public void ParserSinCosTan()
        {
            var stream = new CommandStream()
            {
                Line = "SIN(1.5707963267948966192313216916398)+COS(0)+TAN(0.78539816339744830961566084581988)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(3.0);
        }
        public void AddingCommandsTest()
        {
            var s = new CommandStream(128)
            {
                MaxProcessingTime = 10
            };

            s.Add(_cmd1);
            s.Add(_cmd2);
            s.Add(_cmd3);

            Assert.AreEqual(3, s.CommandsCount);
        }
Exemple #9
0
        public void ParserBitAndOr()
        {
            var stream = new CommandStream()
            {
                Line = "(255&8)+(1|2)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(11.0);
        }
Exemple #10
0
        public void ParserAbsCeilFloor()
        {
            var stream = new CommandStream()
            {
                Line = "ABS(-1)+FIX(1.8)+FUP(0.5)+ROUND(1.7)"
            };                                                                                  // FIX=>floor, FUP=>Ceil
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(5.0);
        }
Exemple #11
0
        public void ParserCompareNotEqual()
        {
            var stream = new CommandStream()
            {
                Line = "(1!=2)+(1!=1)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(1.0);
        }
Exemple #12
0
        public void ParserConstantValueFloatDotMinus()
        {
            var stream = new CommandStream()
            {
                Line = "-.5"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(-0.5);
        }
Exemple #13
0
        public void ParserCompareGt()
        {
            var stream = new CommandStream()
            {
                Line = "(1>2)+(1>=1)+(4>1)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(2.0);
        }
Exemple #14
0
        public void ParserSin()
        {
            var stream = new CommandStream()
            {
                Line = "SIN(1.5707963267948966192313216916398)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(1.0);
        }
Exemple #15
0
        public void ParserXOr()
        {
            var stream = new CommandStream()
            {
                Line = "(3||1)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(2.0);
        }
Exemple #16
0
        public void ParserBitLeftRight()
        {
            var stream = new CommandStream()
            {
                Line = "(1<<1)+(16>>1)"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(8.0 + 2.0);
        }
Exemple #17
0
        public void ParserPow()
        {
            var stream = new CommandStream()
            {
                Line = "2^8"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(256);
        }
Exemple #18
0
        public void ParserMod()
        {
            var stream = new CommandStream()
            {
                Line = "14%10"
            };
            var parser = new ExpressionParser(stream);

            parser.Parse();

            parser.IsError().Should().BeFalse();
            parser.Answer.Should().Be(4.0);
        }
Exemple #19
0
            public override bool Execute(ICommandSource?source, CommandStream stream)
            {
                if (stream.ConsumeEnum(out LogLevel level, LogLevel.Info) && stream.Consume(NodeType.STRING, out string?message))
                {
                    if (!string.IsNullOrEmpty(message))
                    {
                        Program.LOGGER.Log(message, level);
                        Console.WriteLine($"Wrote message '{message}' to the logs");
                        return(true);
                    }
                }

                Console.WriteLine("'log' requires at least a single argument.");
                return(false);
            }
Exemple #20
0
            public override bool Execute(ICommandSource?source, CommandStream stream)
            {
                if (stream.Consume(NodeType.STRING, out string?value))
                {
                    if (Directory.Exists(value))
                    {
                        var graph = Tree.FromDirectory(new DirectoryInfo(value));
                        graph.PrettyPrint(Console.Out, DirectoryTree.NameFactory);
                        return(true);
                    }
                }

                Console.WriteLine("'tree' requires a single argument referring to a valid directory.");
                return(false);
            }
Exemple #21
0
        protected virtual string ReadIdent()
        {
            var sb = new StringBuilder();

            char ch = _reader.NextChar;

            sb.Append(ch);
            ch = _reader.Next();

            while (CommandStream.IsAlpha(ch) || CommandStream.IsDigit(ch))
            {
                sb.Append(ch);
                ch = _reader.Next();
            }

            return(sb.ToString());
        }
Exemple #22
0
            public override bool Execute(ICommandSource?source, CommandStream stream)
            {
                var messages = Program.LOGGER.Messages;

                Console.WriteLine("Dumping logs...");
                Console.WriteLine();

                if (messages.Any())
                {
                    Program.LOGGER.Dump();
                }
                else
                {
                    Console.WriteLine("No logs found");
                }

                return(true);
            }
Exemple #23
0
        public void ProcessingTimeTest(
            [Range(2.0, 10.0, 1.0)] double processingTime,
            [Values(10, 50, 100)] int numOfCommands)
        {
            var s = new CommandStream(128)
            {
                MaxProcessingTime = processingTime
            };

            var cmdList = new List <DeferredCommand>();

            for (int i = 0; i < numOfCommands; i++)
            {
                var cm1 = new DeferredCommand(_p.PopulateRandomList100)
                {
                    InitExecutionDelayMin = 0.0f,
                    InitExecutionDelayMax = 0.0f,
                    ExecutionDelayMin     = 0.00001f,
                    ExecutionDelayMax     = 0.00001f
                };
                s.Add(cm1);
                cmdList.Add(cm1);
            }

            // This is to give Time for the structures within to take their appropriate size
            // which may take some Time in the first round.
            s.Process();
            for (int i = 0; i < 5; i++)
            {
                s.Process();
#if DISPLAY_LOG
                StreamLog(s);
#endif
            }

#if DISPLAY_LOG
            for (int i = 0; i < numOfCommands; i++)
            {
                Console.WriteLine("Cmd {0} Executed {1} times.", i, cmdList[i].TimesExecuted);
            }
#endif
        }
Exemple #24
0
    // Use this for initialization
    void Start()
    {
        commandStream = new CommandStream();
        commandRecord = new Dictionary <ObjectBase, List <CommandStream> > ();


        CommandConversion Do_FrieCommand = (ObjectBase playObj) => {
            FrieCommand frie = new FrieCommand();
            frie.Execute(playObj);
            commandRecord [playObj].Add(frie);
        };

        CommandConversion Do_EludeCommand = (ObjectBase playObj) => {
            EludeCommand elude = new EludeCommand();
            elude.Execute(playObj);
            commandRecord [playObj].Add(elude);
        };

        CommandConversion Do_JumpCommand = (ObjectBase playObj) => {
            JumpCommand jump = new JumpCommand();
            jump.Execute(playObj);
            commandRecord [playObj].Add(jump);
        };

        CommandConversion Do_SupplementCommand = (ObjectBase playObj) => {
            SupplementCommand supplement = new SupplementCommand();
            supplement.Execute(playObj);
            commandRecord [playObj].Add(supplement);
        };

        CommandConversion Do_WalkCommand = (ObjectBase playObj) => {
            WalkCommand walk = new WalkCommand();
            walk.Execute(playObj);
            commandRecord [playObj].Add(walk);
        };

        CommandRoute.Add(CommandType.EludeCommand, Do_EludeCommand);
        CommandRoute.Add(CommandType.FrieCommand, Do_FrieCommand);
        CommandRoute.Add(CommandType.JumpCommand, Do_JumpCommand);
        CommandRoute.Add(CommandType.SupplementCommand, Do_SupplementCommand);
        CommandRoute.Add(CommandType.WalkCommand, Do_WalkCommand);
    }
        public ICommandStream Start(string arguments)
        {
            var info = new ProcessStartInfo(ExecutablePath, arguments)
            {
                CreateNoWindow         = true,
                RedirectStandardInput  = true,
                RedirectStandardOutput = true,
                UseShellExecute        = false,
                WorkingDirectory       = WorkingDirectory,
            };
            var process = new Process
            {
                StartInfo = info,
            };

            process.Start();
            var stream = new CommandStream(process);

            return(stream);
        }
Exemple #26
0
        private bool EvaluateParameterValue(CommandState state, out double paramvalue)
        {
            var linestream = new CommandStream()
            {
                Line = GCodeAdd
            };
            var expressionparser = new GCodeExpressionParser(linestream)
            {
                ParameterValues = state.ParameterValues
            };

            expressionparser.Parse();
            if (expressionparser.IsError())
            {
                paramvalue = 0;
                return(false);
            }

            paramvalue = expressionparser.Answer;
            return(true);
        }
Exemple #27
0
            public override bool Execute(ICommandSource?source, CommandStream stream)
            {
                if (stream.Consume(NodeType.LITERAL, out string?name))
                {
                    if (stream.Consume(NodeType.STRING, out string?value))
                    {
                        if (ContainsCommandLabel(name !))
                        {
                            Console.WriteLine($"A command of the name '{name}' already exists.");
                            return(false);
                        }

                        TestCommandsBleeding.Commands.Add(new AnonCommand(name !, value !));
                        Console.WriteLine($"Set alias for {value} to {name}.");
                        return(true);
                    }
                }

                Console.WriteLine("'alias' requires a two arguments; one referring to a valid name, and one referring to a valid command(s).");
                return(false);
            }
Exemple #28
0
        public bool TryGetVariable(char name, CommandState state, out double val)
        {
            Variable var = GetVariable(name);

            if (var?.Value != null)
            {
                val = var.Value.Value;
                return(true);
            }

            if (var?.Parameter != null)
            {
                if (var.ParameterIsTerm)
                {
                    var lineStream = new CommandStream()
                    {
                        Line = var.Parameter
                    };
                    var expressionParser = new GCodeExpressionParser(lineStream)
                    {
                        ParameterValues = state.ParameterValues
                    };
                    expressionParser.Parse();
                    if (!expressionParser.IsError())
                    {
                        val = expressionParser.Answer;
                        return(true);
                    }
                }
                else if (int.TryParse(var.Parameter, out int parameterNo) && state.ParameterValues.ContainsKey(parameterNo))
                {
                    val = state.ParameterValues[parameterNo];
                    return(true);
                }
            }

            val = 0;
            return(false);
        }
Exemple #29
0
        public override void ReadFrom(CommandStream stream)
        {
            int saveIndex = stream.PushIdx();

            stream.Next();

            if (stream.IsNumber())
            {
                int parameter = stream.GetInt();

                if (parameter >= 0 && stream.SkipSpacesToUpper() == '=')
                {
                    stream.Next();
                    ParameterNo = parameter;
                }
                else
                {
                    // error => do not analyse line
                    stream.PopIdx(saveIndex);
                }
            }

            ReadFromToEnd(stream);
        }
Exemple #30
0
 public override bool Execute(ICommandSource?source, CommandStream stream) => Dispatch(this, command);