repeat.cpp

来自「一个简单的语法分析器,实现对布尔表达式,算术表达式的分析,以及if语句,FOR语」· C++ 代码 · 共 48 行

CPP
48
字号
//分析repeat...until循环语句
#include "Parser.h"

int Sen_Repeat()
{
	int RTN_ADDR = lineOfEqu + 1;
	int rtn1 = 0;
	GetNextSymble();
	switch(curr_code)
	{
		case 27:                      //标志符,说明是赋值语句
			Sen_Assign();
			rtn1 = expr_rtn_addr;
			break;
		case 12:
			rtn1 = Sen_For();             //for语句
			break;
		case 13:                       //if语句
			rtn1 = Sen_If();
			break;
		case 20:                       //repeat循环语句
			rtn1 = Sen_Repeat();
			break;
		case 26:                        //while循环语句
			rtn1 = Sen_While();
			break;
		case 2:                         //begin
			rtn1 = Begin();
			break;
		default:                        //其他语句为错误
			Error(COMMON_ERROR);
			break;
	}
	GetNextSymble();
	if(curr_code == 24)                  //是否为until
	{
		int bool_addr = Bool_Analysis();
		EquPush(11, bool_addr, 0, rtn1);
		EquPush(6, 0, 0, lineOfEqu+2);
		if(curr_code != 42)                   //是否为;
			Error(REPEAT_ERROR);             //repeat后的until要加;
	}
	else
	{
		Error(REPEAT_ERROR);
	}
	return RTN_ADDR;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?