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

📄 a.cpp

📁 能够实现词法分析,是我在学编译时做的,希望多提意见
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
#include <ctype.h>
#include "getsym.h"
#include "b.h"
/*
FILE *fp=fopen("D:\\b.txt","rb+");

char GETCH()
{//取一个字符
	char c;
	fread(&c,1,1,fp);
	return c;
}

int main1(void)
{
	REWord REWords[20]={{"CONST","CONSTSYM"},{"if","ifSYM"},{"then","thenSYM"},{"begin","beginSYM"},{"end","endSYM"},
		{"call","callSYM"},{"read","readSYM"},{"write","writeSYM"},{"procedure","procedureSYM"},{"var","varSYM"}};
	//////////////////////////////////////////////////////////////////////////开始读文件
	char buf;
	char *buff=new char[256];
	int i,j,length;
	double d;
	printf("Hello World!\n");
	buf=GETCH();
	if(buf==NULL)
	{
		printf("Error!\nbuf==null\n");
		return 1;
	}
	do 
	{
		if (isspace(buf))
		{//空白字符就继续读
			buf=GETCH();
			continue;
		}

		if (ispunct(buf))
		{//符号
//			printf(" is 符号\n");
			switch (buf)
			{//ID从11开始
			case '=':
				buf=GETCH();
				break;
			case ',':
				buf=GETCH();
				break;
			case ';':
				buf=GETCH();
				break;
			case '+':
				buf=GETCH();
				break;
			case '-':
				buf=GETCH();
				break;
			case '*':
				buf=GETCH();
				break;
			case '/':
				buf=GETCH();
				break;
			case '#':
				buf=GETCH();
				break;
			case '(':
				buf=GETCH();
				break;
			case ')':
				buf=GETCH();
				break;
			case ':':
				buf=GETCH();
				if (buf=='=')
				{//识别出:=
					buf=GETCH();
				}
				break;
			case '<':
				buf=GETCH();
				if (buf=='=')
				{//识别出<=
					buf=GETCH();
				}
				break;
			case '>':
				buf=GETCH();
				if (buf=='=')
				{//识别出>=
					buf=GETCH();
				}
				break;
			default:
				buf=GETCH();
				break;
			}
			break;
		}

		if (isalpha(buf))
		{//字母
//			printf(" is 字母\n");
			memset(buff,'\0',256);
			i=0;
			do 
			{
				buff[i++]=buf;
				//取下一个
				buf=GETCH();
			} while (isalpha(buf)||buf==46);
			if (isalpha(buff[1])||buff[1]==46)
			{
// 				for (j=0;j<i;j++)
// 				{
// 					printf("%c",buff[j]);
// 				}
// 				printf("\n");

				for (j=0;j<10;j++)
				{
					if (0==memcmp(buff,REWords[j].KEY,i-1))
					{
						printf("ok!\n");
						cout<<buff<<endl;
						break;
					}
				}
			}
			else
				printf("%c\n",buff[0]);

			continue;
		}

		if (isdigit(buf))
		{//数字
//			printf(" is 数字\n");
			memset(buff,'\0',256);
			i=0;
			do 
			{
				buff[i++]=buf;
				//取下一个
				buf=GETCH();
			} while (isdigit(buf)||buf==46);
// 			if (isdigit(buff[1])||buff[1]==46)
// 			{
// 				for (j=0;j<i;j++)
// 				{
// 					printf("%c",buff[j]);
// 				}
// 				printf("\n");
// 			}
			d=atof(buff);
			printf("%f\n",d);
			continue;
		}
		
		buf=GETCH();
	} while (buf>=0);//buf=-1 is end of file

	delete buff;

	printf("Hello World!\n");
	fclose(fp);

	return 0;
}
*/

⌨️ 快捷键说明

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