一个函数的堆栈处理设计流程
{
int a = 50;
if(a>3){
int b = a;
} else {
}
}
1.首先发现第一个{.这时候初始化堆栈是0.如果后面有新的{就说明进入的新的堆栈需要把堆栈++.此时堆栈是0
2.判断int是否是基础类型.如果是说明要声明变量.可以是class或者是基础类型.判断通过之后.就new一个TSObject出来.然后取等号后面的50.把值写进去.
然后看到;号结束.然后插入到系统的堆栈数组中..定义为 TSList<TSMap<Name, TSObject>>
3.然后发现if.然后取后面的bool判断的语句.然后进行算数判断.此时会发现有个a.这时候需要向上查找堆栈如果找不到该字符串的声明类型则报错.是不是可以通过.如果通过.就发现下一个堆栈{.此时堆栈++变成1.如果没通过则看有没有else.如果没事啥事都木有了..如果有.则进入else的堆栈. 如果是else if那么会重复3的流程.直到完成.
4.然后发现又有int.然后重复1.发现}之后堆栈--;
5.如果期间碰到return.则需要直接退出堆栈.如果return后面有值.则给TSfunction的返回值赋值.然后其他调用该函数的地方就会收到该值.
6.只有for才需要break.和continue.continue会继续跑. break则退出一层for.