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

📄 yylex.cpp

📁 语法分析器lex和词法分析器yacc的C++语言实现 1.Lex (1)Lex输入文件的解析 (2)正规表达式的解析 (3)一个正规表达式到NFA的转换算法实现 (4)多个NFA的合并
💻 CPP
字号:

#include"yytab.h"
extern SV yyval;
const int START=0;
const int ERROR=40000;

int analysis(char *yytext,int n)
{
	int state=START;
	int N=n+1;//N表示串长加1,为与状态数保持一致。
	for(int i=0;i<N;i++)
	{
	switch(state)
	{
	case 0:
	{
		if(yytext[i]=='1')
		{
			state=1;
			break;
		}
		if(yytext[i]=='2')
		{
			state=1;
			break;
		}
		if(yytext[i]=='3')
		{
			state=1;
			break;
		}
		if(yytext[i]=='4')
		{
			state=1;
			break;
		}
		if(yytext[i]=='5')
		{
			state=1;
			break;
		}
		if(yytext[i]=='6')
		{
			state=1;
			break;
		}
		if(yytext[i]=='7')
		{
			state=1;
			break;
		}
		if(yytext[i]=='8')
		{
			state=1;
			break;
		}
		if(yytext[i]=='9')
		{
			state=1;
			break;
		}
		if(yytext[i]=='+')
		{
			state=2;
			break;
		}
		if(yytext[i]=='-')
		{
			state=3;
			break;
		}
		if(yytext[i]=='/')
		{
			state=4;
			break;
		}
		if(yytext[i]=='*')
		{
			state=5;
			break;
		}
	else
	{
		return ERROR;
	}
	break;
	}
	case 1:
	{
		if(i==N-1)
		{
			yyval.ival=2;return 30000;
			break;
		}
		if(yytext[i]=='0')
		{
			state=1;
			break;
		}
		if(yytext[i]=='1')
		{
			state=1;
			break;
		}
		if(yytext[i]=='2')
		{
			state=1;
			break;
		}
		if(yytext[i]=='3')
		{
			state=1;
			break;
		}
		if(yytext[i]=='4')
		{
			state=1;
			break;
		}
		if(yytext[i]=='5')
		{
			state=1;
			break;
		}
		if(yytext[i]=='6')
		{
			state=1;
			break;
		}
		if(yytext[i]=='7')
		{
			state=1;
			break;
		}
		if(yytext[i]=='8')
		{
			state=1;
			break;
		}
		if(yytext[i]=='9')
		{
			state=1;
			break;
		}
	else
	{
		return ERROR;
	}
	break;
	}
	case 2:
	{
		if(i==N-1)
		{
			return 30001;
			break;
		}
	break;
	}
	case 3:
	{
		if(i==N-1)
		{
			return 30002;
			break;
		}
	break;
	}
	case 4:
	{
		if(i==N-1)
		{
			return 30004;
			break;
		}
	break;
	}
	case 5:
	{
		if(i==N-1)
		{
			return 30003;
			break;
		}
	break;
	}
	}
	}

}

⌨️ 快捷键说明

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