⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 program.c

📁 北京航空航天大学计算机系要求的编译器大作业。大概6000行代码。
💻 C
字号:
/***************************************
By BHU 35060122 Peng Hui;
2008.02
description:
A small compiler to translate a C program to 80X80 Assembly Code
***************************************/

#include"Global.h"


void Program()	//主程序 
{
	if(strcmp(Symbol[1],"const") == 0)
	{
		while(strcmp(Symbol[1],"const") == 0)
		{
			ConstDec();
			/*if(strcmp(Symbol[1],"SEMIC") != 0)
					Error(23);
				else 
					NextSym(temp);*/
		}
	}

	if(strcmp(Symbol[1],"int") == 0)
	{
		while(strcmp(Symbol[1],"int") == 0)
		{
			NextSym(temp);
			if(strcmp(Symbol[1],"ID") == 0)
			{
				NextSym(temp);
				{
					if(strcmp(Symbol[1],"LParen") == 0)    //子函数
					{
						Parameter();
						CompStmt();
					}
					else if(strcmp(Symbol[1],"COLOM") == 0 || strcmp(Symbol[1],"SEMIC") == 0)  //变量定义
					{
						while(strcmp(Symbol[1],"COLOM") == 0)
						{
							NextSym(temp);
							if(strcmp(Symbol[1],"ID") != 0)
								Error(4);
							else 
								NextSym(temp);
						}
						if(strcmp(Symbol[1],"SEMIC") != 0)
							Error(23);
						else
							NextSym(temp);
					}
				}
				
			}
		}
	}
		
	if(strcmp(Symbol[1],"int") == 0 || strcmp(Symbol[1],"void") == 0)
	{
		while(strcmp(Symbol[1],"int") == 0 || strcmp(Symbol[1],"void") == 0)
		{
			if(strcmp(Symbol[1],"int") == 0)
				FuncDef();
			else
			{
				NextSym(temp);
				if(strcmp(Symbol[1],"main") == 0)
				{
					MainFunc();
					return;
				}
				else if(strcmp(Symbol[1],"ID") == 0)
					voidFunc();
				else
					Error(4);
			}
		}
	}
		
		//MainFunc();
}


⌨️ 快捷键说明

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