前言
做了分支后,循环难度也没多大,很多问题分支中都解决了。做循环前先抽象出一个CondCmd类,继承于BlockCmd,让IfCmd、WhileCmd、Do_UntilCmd、ForCmd继承这个类。
解释器的类
目前39个类(之前把异常类、信号与槽类给忽略了)。
while
这个做起来比if-elif-else链条简单多了,只有一个条件语句condition和一个语句块block!!!
遇到while时创建WhileCmd节点,并压入栈中,遇到后面条件语句的右括号后,将条件语句装入这个节点,在遇到end关键字后,结束掉栈顶节点,即WhileCmd节点的语句块,并出栈,将这个节点压入semantic_tree,并置空uncompleted_tree
//Cmd.cpp