Exemple #1
0
        public static Instruction Parse(String parseFrom)
        {
            var r = new Instruction();

            var annotationPoint = parseFrom.IndexOf('#');
            if (annotationPoint >= 0)
            {
                r.Annotation = parseFrom.Substring(annotationPoint + 1);
                parseFrom = parseFrom.Substring(0, annotationPoint);
            }

            var parts = parseFrom.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            r.Opcode = (Enum.Parse(typeof(InstructionSet), parts[0]) as InstructionSet?).Value;
            r.FirstOperand = r.SecondOperand = r.ThirdOperand = Operand.NONE;
            if (parts.Length >= 2) r.FirstOperand = (Enum.Parse(typeof(Operand), parts[1]) as Operand?).Value;
            if (parts.Length >= 3) r.SecondOperand = (Enum.Parse(typeof(Operand), parts[2]) as Operand?).Value;
            if (parts.Length >= 4) r.ThirdOperand = (Enum.Parse(typeof(Operand), parts[3]) as Operand?).Value;
            return r;
        }
Exemple #2
0
 public RuntimeError(string msg, Instruction at)
     : base(msg)
 {
 }
Exemple #3
0
 public RuntimeError(ExecutionContext context, string msg, Instruction at)
     : base(msg)
 {
 }
Exemple #4
0
 private int CountLiteralOperands(Instruction Instruction)
 {
     int literals = 0;
     if (ExpectLiteral(Instruction.FirstOperand)) ++literals;
     if (ExpectLiteral(Instruction.SecondOperand)) ++literals;
     if (ExpectLiteral(Instruction.ThirdOperand)) ++literals;
     return literals;
 }