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

📄 test.cpp

📁 基于控制台的词法分析器
💻 CPP
字号:
#include <stdio.h>
#include <iostream.h>
#include "getsym.h"
#include "getsym.cpp"

SYMINFO s;			//词法分析信息结构
char in[65536];		//源程序缓冲区

void main()
{
	int i,j;
	FILE *fp; 
    if((fp=fopen("f:\\a.txt", "rb"))==NULL) 
    { 
        printf("Can't open file"); 
        exit(1); 
    }
    fseek(fp,0,SEEK_END);
	i=ftell(fp);			//取文件长度			
	fseek(fp,0,SEEK_SET);
	if(i>65535)			
		cout<<"文件太长!"<<endl;			
	else			
	{			
		fread(in,1,i,fp);			
		in[i]=0;			//防止溢出
	}			
	fclose(fp);
    if(getsyminfo(in,&s))
		cout<<"wrong!"<<endl;
	for(i=0,j=0;i<s.num;i++)	
	{	
		if(s.sym[i].type==TYPE_ERROR)	
		{
			j++;
			cout<<i<<"  error"<<s.sym[i].id<<"  [line:"<<s.sym[i].line<<"]:"<<i<<"  error"<<s.sym[i].id<<"  [line:"<<s.sym[i].line<<"]:"<<errtxt[s.sym[i].id]<<":'"<<s.sym[i].name<<"'"<<endl;
		}	
		else	
		{
			cout<<i<<"  ("<<s.sym[i].type<<"  "<<s.sym[i].id<<")  "<<s.sym[i].name<<endl;
		}	
	}	
	cout<<"找到"<<i<<"个符号。 "<<endl;
	if(j>0)
	{
	   cout<<"但是含有"<<j<<"错误。"<<endl;
	}
	else 
	{
		cout<<"词法全部正确。"<<endl;
	}
}

⌨️ 快捷键说明

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