开源编译器学习笔记05(VC6 语法分析器——见面语法树状态机)——2014_2_1

http://www.zengl.com/html/genlanmu/zenglbianchengyuyan/article-4.html


文章越来越不通俗,

需要花精力理解

int express()
{
	Node_Type *nodes = AST_nodes.nodes;
	int state = START;
	int p=-1;
	bool IsMidTim_Div = FALSE;
	int tmpnode = -1;
	while(state!=DOWN)
	{
		curnode++;
		switch(state)
		{
		case START:
			状态机1();
			break;
		case INID:
			状态机2();
			break;
		case INASSIGN:
			状态机3();
			break;
		case INPLUS_MINIS:
			状态机4();
			break;
		case INTIME_DIVIDE:
			状态机5();
			break;
		default:
			myexit("syntax error");
			break;
		}//switch
	}//while
	return p;
}

按照原话,这个express函数可以说是整个zengl编程语言核心部分 最复杂,最难理解的 部分。


下一步,一个一个状态机分析。

开源编译器学习笔记05(VC6 语法分析器——见面语法树状态机)——2014_2_1_第1张图片

你可能感兴趣的:(开源编译器学习笔记——实战,语法树)