コード例 #1
0
        public override IPStmt VisitAssertStmt(PParser.AssertStmtContext context)
        {
            IPExpr assertion = exprVisitor.Visit(context.assertion);

            if (!PrimitiveType.Bool.IsSameTypeAs(assertion.Type))
            {
                throw handler.TypeMismatch(context.assertion, assertion.Type, PrimitiveType.Bool);
            }
            IPExpr message;

            if (context.message == null)
            {
                message = new StringExpr(context, "", new List <IPExpr>());
            }
            else
            {
                message = exprVisitor.Visit(context.message);
                if (!message.Type.IsSameTypeAs(PrimitiveType.String))
                {
                    throw handler.TypeMismatch(context.message, message.Type, PrimitiveType.String);
                }
            }

            return(new AssertStmt(context, assertion, message));
        }
コード例 #2
0
ファイル: StatementVisitor.cs プロジェクト: zhaowei19920524/P
        public override IPStmt VisitAssertStmt(PParser.AssertStmtContext context)
        {
            IPExpr assertion = exprVisitor.Visit(context.expr());

            if (!PrimitiveType.Bool.IsSameTypeAs(assertion.Type))
            {
                throw handler.TypeMismatch(context.expr(), assertion.Type, PrimitiveType.Bool);
            }
            string message = context.StringLiteral()?.GetText() ?? "";

            return(new AssertStmt(context, assertion, message));
        }
コード例 #3
0
ファイル: StatementVisitor.cs プロジェクト: tushetodorov/P
        public override IPStmt VisitAssertStmt(PParser.AssertStmtContext context)
        {
            var assertion = exprVisitor.Visit(context.expr());

            if (!PrimitiveType.Bool.IsSameTypeAs(assertion.Type))
            {
                throw handler.TypeMismatch(context.expr(), assertion.Type, PrimitiveType.Bool);
            }

            var message = context.StringLiteral()?.GetText() ?? "";

            if (message.StartsWith("\""))
            {
                message = message.Substring(1, message.Length - 2);
            }
            return(new AssertStmt(context, assertion, message));
        }
コード例 #4
0
 public override object VisitAssertStmt(PParser.AssertStmtContext context)
 {
     return(null);
 }