Ejemplo n.º 1
0
        public List <MachineStep> Convert(BaseIstruction istruction)
        {
            List <MachineStep> steps = null;

            if (istruction is SetVariableIstruction svi)
            {
                steps = Convert(svi);
            }
            else if (istruction is MachIstruction)
            {
                if (istruction is MIstruction mi)
                {
                    steps = Convert(mi);
                }
                else if (istruction is SIstruction si)
                {
                    steps = Convert(si);
                }
                else if (istruction is MultipleMachIstructions mmi)
                {
                    steps = Convert(mmi);
                }
            }
            else if (istruction is GIstruction gi)
            {
                steps = Convert(gi);
            }

            if (steps != null && steps.Count() > 0)
            {
                var str = $"line {istruction.LineNumber}";

                steps.ForEach((s) =>
                {
                    if (string.IsNullOrEmpty(s.Description))
                    {
                        s.Description = str;
                    }
                    else
                    {
                        s.Description += $" ({str})";
                    }
                });
            }

            return(steps);
        }
        public static BaseIstruction Create(string data, bool isIndexWithParentesis, int lineNumber)
        {
            BaseIstruction istruction = null;
            var            ss         = Regex.Split(data, "\\=");

            if (ss != null && ss.Count() == 2)
            {
                ss[1] = Regex.Replace(ss[1], "\\[|\\]", string.Empty);

                var value = double.Parse(ss[1], CultureInfo.InvariantCulture);
                var name  = GetVariableName(ss[0], isIndexWithParentesis);

                istruction            = new SetVariableIstruction(name.Item1, name.Item2, value);
                istruction.LineNumber = lineNumber;
            }

            return(istruction);
        }
Ejemplo n.º 3
0
        public static BaseIstruction Create(string data, int lineNumber)
        {
            BaseIstruction istruction = null;
            var            indexRegEx = new Regex("G\\d+");

            if (indexRegEx.IsMatch(data))
            {
                var matchStr = indexRegEx.Match(data).Value;
                var sIndex   = matchStr.Remove(0, 1);

                if (int.TryParse(sIndex, out int index))
                {
                    var parameters = ParseParameters(data.Replace(matchStr, string.Empty));
                    istruction            = new GIstruction(index, parameters);
                    istruction.LineNumber = lineNumber;
                }
            }

            return(istruction);
        }
 public override List <MachineStep> Convert(BaseIstruction istruction, State state)
 {
     return(Convert(istruction as SIstruction, state));
 }
 public override List <MachineStep> Convert(BaseIstruction istruction, T state)
 {
     return(Convert(istruction as SetVariableIstruction, state));
 }
 public override List<MachineStep> Convert(BaseIstruction istruction, T state)
 {
     return Convert(istruction as MIstruction, state);
 }