示例#1
0
文件: prog3.c 项目: Silox/UGent-stuff
A_stm prog3(void) {
    return A_CompoundStm(
        A_PrintStm(A_PairExpList(
            A_EseqExp(
                A_CompoundStm(
                    A_PrintStm(A_PairExpList(
                        A_EseqExp(
                            A_AssignStm(
                                "a",
                                A_NumExp(1)
                            ),
                            A_IdExp("a")
                        ),
                        A_LastExpList(A_NumExp(3))
                    )),
                    A_AssignStm(
                        "b",
                        A_NumExp(2)
                    )
                ),
                A_IdExp("a")
            ),
            A_LastExpList(A_IdExp("a"))
        )),
        A_PrintStm(A_LastExpList(A_IdExp("b")))
    );
}
示例#2
0
void test_maxargs_exp_op_nested(void** state) {
    A_stm stm = A_PrintStm(A_LastExpList(A_OpExp(
        A_OpExp(
            A_OpExp(
                A_EseqExp(
                    A_PrintStm(A_PairExpList(
                        A_NumExp(7),
                        A_PairExpList(
                            A_NumExp(8),
                            A_LastExpList(A_NumExp(9))
                        )
                    )),
                    A_NumExp(14)
                ),
                A_plus,
                A_NumExp(5)
            ),
            A_times,
            A_NumExp(19)
        ),
        A_minus,
        A_NumExp(42)
    )));

    assert_int_equal(3, maxargs(stm));
}
示例#3
0
文件: prog1.c 项目: JackWyj/Tiger
/* print (3,4,5,4) */
A_stm prog1(void) 
{
	return 
	A_PrintStm(
		A_PairExpList(
			A_NumExp(3),
			A_PairExpList(
				A_NumExp(4),
				A_PairExpList(
					A_NumExp(5),
					A_LastExpList(A_NumExp(4))
				)
			)
		)
	);
}
示例#4
0
A_stm prog_prog(void)
{
// a = 5 + 3; b = (print(a, a-1), 10*a); print b;
// a = 5 + b; b = (print(a, a, a-1), 10*a); print b;
     A_stm stm1 = prog();
     return 
	 	A_CompoundStm( stm1, A_CompoundStm(A_AssignStm("a",
                 A_OpExp(A_NumExp(5), A_plus, A_IdExp("b"))),
  A_CompoundStm(A_AssignStm("b",
      A_EseqExp(A_PrintStm(A_PairExpList(A_IdExp("a"),A_PairExpList(A_IdExp("a"),
                 A_LastExpList(A_OpExp(A_IdExp("a"), A_minus, 
                                       A_NumExp(1)))))),
              A_OpExp(A_NumExp(10), A_times, A_IdExp("a")))),
   A_PrintStm(A_LastExpList(A_IdExp("b"))))));
 
}
示例#5
0
static void test_maxargs_four(void** state) {
    // maxargs(stm) returns 4 stm is an A_PrintStm with 4 members
    A_stm stm = A_PrintStm(
        A_PairExpList(
            A_NumExp(7),
            A_PairExpList(
                A_NumExp(42),
                A_PairExpList(
                    A_NumExp(-1),
                    A_LastExpList(A_NumExp(42))
                )
            )
        )
    );
    assert_int_equal(4, maxargs(stm));
}
示例#6
0
static void test_maxargs_eseq(void** state) {
    A_stm stm = A_PrintStm(A_PairExpList(
        A_EseqExp(
            A_PrintStm(A_PairExpList(
                A_NumExp(8),
                A_PairExpList(
                    A_NumExp(9),
                    A_LastExpList(A_NumExp(10))
                )
            )),
            A_NumExp(18)
        ),
        A_LastExpList(A_NumExp(42))
    ));

    assert_int_equal(3, maxargs(stm));
}
示例#7
0
static void test_maxargs_two(void** state) {
    // maxargs(stm) returns 2 stm is an A_PrintStm with 2 members
    A_stm stm = A_PrintStm(
        A_PairExpList(
            A_NumExp(7),
            A_LastExpList(A_NumExp(42))
        )
    );
    assert_int_equal(2, maxargs(stm));
}
示例#8
0
A_stm prog1(void)
{
    //return A_AssignStm("a", A_OpExp(A_NumExp(5),A_plus, A_NumExp(3)));
    
    return     A_CompoundStm(A_AssignStm("a", A_OpExp(A_NumExp(5),A_plus, A_NumExp(3))),
                             A_CompoundStm(A_AssignStm("b", 
                                                       A_EseqExp(A_PrintStm(A_PairExpList(A_IdExp("a"),
                                                                                          A_LastExpList(A_OpExp(A_IdExp("a"), A_minus, A_NumExp(1))))),
                                                                 A_OpExp(A_NumExp(10), A_times, A_IdExp("a")))),
                                           A_PrintStm(A_LastExpList(A_IdExp("b")))));

}
示例#9
0
static void test_maxargs_multiple(void** state) {
    // maxargs(stm) works with multiple 'A_printStm's
    A_stm stm = A_CompoundStm(
        A_PrintStm(A_PairExpList(
            A_NumExp(7),
            A_LastExpList(A_NumExp(9))
        )),
        A_PrintStm(A_LastExpList(A_NumExp(8)))
    );

    assert_int_equal(2, maxargs(stm));
}
示例#10
0
文件: prog1.c 项目: JackWyj/Tiger
/* print (1,2,3,(print(1,2,3,4), 6)) */
A_stm prog2(void)
{
	return
	A_PrintStm(
		A_PairExpList(
			A_NumExp(1),
			A_PairExpList(
				A_NumExp(2),
				A_PairExpList(
					A_NumExp(3),
					A_LastExpList(
						A_EseqExp(
							A_PrintStm(
								A_PairExpList(
									A_NumExp(1),
									A_PairExpList(
										A_NumExp(2),
										A_PairExpList(
											A_NumExp(3),
											A_LastExpList(A_NumExp(4))
										)
									)
								)
							),
							A_NumExp(6)
						)
					)
				)
			)
		)
	);
}
示例#11
0
static void test_maxargs_deep_nested(void** state) {
    // maxargs(stm) can work with deeply nested statements
    A_stm stm = A_CompoundStm(
        A_AssignStm("a", A_NumExp(0)),
        A_CompoundStm(
            A_PrintStm(A_PairExpList(
                A_NumExp(7),
                A_LastExpList(A_NumExp(42))
            )),
            A_AssignStm("a", A_NumExp(5))
        )
    );
    assert_int_equal(2, maxargs(stm));
}
示例#12
0
void test_maxargs_exp_op(void** state) {
    A_stm stm = A_PrintStm(A_LastExpList(A_OpExp(
        A_EseqExp(
            A_PrintStm(A_PairExpList(
                A_NumExp(8),
                A_LastExpList(A_NumExp(9))
            )),
            A_NumExp(7)
        ),
        A_plus,
        A_NumExp(17)
    )));

    assert_int_equal(2, maxargs(stm));
}
示例#13
0
static void test_maxargs_print_nested(void** state) {
    // maxargs(stm) works with prints within prints
    A_stm stm = A_PrintStm(A_LastExpList(
        A_EseqExp(
            A_PrintStm(
                A_PairExpList(
                    A_NumExp(7),
                    A_LastExpList(A_NumExp(8))
                )
            ),
            A_NumExp(42)
        )
    ));

    assert_int_equal(2, maxargs(stm));
}
示例#14
0
static void test_maxargs_complex(void** state) {
    // maxargs(stm) works with an arbitrary complex statement
    A_stm stm = A_CompoundStm(
        A_AssignStm(
            "a",
            A_OpExp(A_NumExp(5), A_plus, A_NumExp(3))
        ),
        A_CompoundStm(
            A_AssignStm("b", A_EseqExp(
                A_PrintStm(A_PairExpList(
                    A_IdExp("a"),
                    A_LastExpList(
                        A_OpExp(A_IdExp("a"), A_minus, A_NumExp(1))
                    )
                )),
                A_OpExp(A_NumExp(10), A_times, A_IdExp("a"))
            )),
            A_PrintStm(A_LastExpList(A_IdExp("b")))
        )
    );

    assert_int_equal(2, maxargs(stm));
}