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

📄 cmain.cpp

📁 编译器,词法分析和语法分析,里面利用到了哈希表来加快搜索字符表速度.
💻 CPP
字号:
//CMain.cpp
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <stdio.h>
#include "CFenCi.h"

void main()
{
		FILE* fin = fopen("pascal.txt","r");//导入文件用的变量
		FILE* fout= fopen("cifafenxi.txt","w");//导出文件用的变量
		//ofstream out("cifafenxi.txt");
		CFenXi fenxi;
		bool bFlagCiFa=true;
		bool bFlagYuFa=true;

		for(int i=0; i<20000; i++)
		{
				char ch;
				if(i>1998)
						break;
				fscanf(fin,"%c",&ch);
				
				fenxi.m_str[i]=ch;
				if(ch=='#')
						break;
		}
		fclose(fin);

		cout<<"按任意键开始词法分析"<<endl;
		system("pause");

		bFlagCiFa=fenxi.CiFaFenXi();

		for(i=0; i<fenxi.nLength;i++ )
		{
				fprintf(fout,"%d%20s%15s\n",(fenxi.m_cifa[i])->nLineNo+1,(fenxi.m_cifa[i])->szDesc,(fenxi.m_cifa[i])->szText);//常数
		}
		fclose(fout);

		system("cls");
		cout<<"词法分析结束,"<<endl;
		cout<<"现在可以查看词法分析结果,按下任意键盘开始语法分析"<<endl;
		system("pause");
		cout<<"**********************************************************"<<endl;
		cout<<endl<<endl;

		system("cls");
		if(!bFlagCiFa)
				cout<<"词法分析有错,不进行语法分析"<<endl;
		else
		{
				bFlagYuFa=fenxi.YuFaFenXi();
				if(!bFlagYuFa)
				{
						cout<<"语法分析出错:";
						fenxi.ShowCurrentError();
				}
				else
						cout<<"语法分析正确"<<endl;
		}
		system("pause");

}

⌨️ 快捷键说明

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