昨晚调了一晚的程序,没有出结果,于是今天起了个早床。。。搞定了:)
另外觉得gcc的提错方式还可以改一下,不小心敲错一个函数后,eg:
t1 = interStm( s->u.compound.stm1 , t); //掉了一个p
// t1 = interpStm( s->u.compound.stm1 , t);
提示错误,类型转换不兼容
这样很难查错,提示没有定义该函数可能会更好。
该程序解释一个语句:
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")))));
输出结果为:
[heixia@localhost chap1]$ ./a.out
8 7 80
|
OK!
|
文件: | 直线式程序解释器.tar.gz |
大小: | 2KB |
下载: | 下载 |
|
阅读(1597) | 评论(4) | 转发(0) |