示例#1
0
        private SlangExpression BuildBinaryExpression(SlangAssembly assembly, Op op)
        {
            var left  = this.Build(assembly, op.Operands[0]);
            var right = this.Build(assembly, op.Operands[1]);

            switch (op.Type)
            {
            case OpType.Add:
                return(SlangExpression.Add(left, right));
            }

            throw new System.NotImplementedException();
        }
示例#2
0
        public SlangExpression Build(SlangAssembly assembly, int entryPoint)
        {
            var op = assembly.Program[entryPoint];

            switch (op.Type)
            {
            case OpType.Add:
                return(BuildBinaryExpression(assembly, op));

            case OpType.Type:
                return(SlangExpression.CreateType(new PrimitiveType
                {
                    Format = PrimitiveFormat.SignedInteger,
                    Size = 4
                }));

            case OpType.Literal:
                return(SlangExpression.Literal(this.Build(assembly, op.Operands[0]), op.Operands[1]));

            default:
                throw new System.NotImplementedException();
            }
        }
示例#3
0
 public SlangLiteralExpression(SlangExpression typeExpression, object value)
 {
     this.TypeExpression = typeExpression;
     this.Value          = value;
 }
示例#4
0
 public SlangBinaryOperatorExpression(SlangOperator op, SlangExpression left, SlangExpression right)
 {
     this.Op    = op;
     this.Left  = left;
     this.Right = right;
 }