コード例 #1
0
ファイル: IfStatementResolver.cs プロジェクト: BooMWax/ifmo
        public static List<Error> Resolve(IfStatement ifs)
        {
            var errors = new List<Error>();

            IType typeLeft, typeRight;
            errors.AddRange(ExpressionResolver.ResloveExpression(ifs, ifs.Cond.Left, out typeLeft));
            errors.AddRange(ExpressionResolver.ResloveExpression(ifs, ifs.Cond.Right, out typeRight));

            if (typeLeft.ToString() != typeRight.ToString())
                errors.Add(new Error(ifs.GetSourceIdentifier(), ifs.Cond.Left.List.First(),
                                     string.Format(ErrorMessages.TypeMismatch, typeLeft.ToString(), typeRight.ToString())));

            foreach (var sts in ifs.GetSpecifiedChildren<Body>().First().Statements)
            {
                errors.AddRange(StatementResolver.Resolve(sts));
            }

            return errors;
        }
コード例 #2
0
ファイル: CSharpEmitter.cs プロジェクト: BooMWax/ifmo
 private static void EmitIfStatement(IfStatement ifst)
 {
     Source += "if (" + MakeString(ifst.Cond) + ")\n{";
     foreach (var st in ifst.GetSpecifiedChildren<Statement>())
     {
         Emit(st);
     }
     Source += "}";
 }
コード例 #3
0
ファイル: Emitter.cs プロジェクト: BooMWax/ifmo
        private static void EmitIfStatement(MethodBuilder mb, IfStatement ass)
        {
            var il = mb.GetILGenerator();

            il.Emit(OpCodes.Ret);
        }