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(); }
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(); } }
public SlangLiteralExpression(SlangExpression typeExpression, object value) { this.TypeExpression = typeExpression; this.Value = value; }
public SlangBinaryOperatorExpression(SlangOperator op, SlangExpression left, SlangExpression right) { this.Op = op; this.Left = left; this.Right = right; }