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); }
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); }