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

📄 chifa.txt

📁 编译原理实现词法分析功能的试验源代码主要是输入一段程序输出单词系列
💻 TXT
字号:
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
void main()
{
char *keywords[]={"begin","call","const","do","end","if","odd","procedure","read","then","var","while","write"}; 
char *wsym[ ]={"beginsym" ,"callsym","constsym","dosym","endsym","ifsym","oddsym","proceduresym","readsym","thensym","varsym","whilesym" ,"writesym"};
	char *sym;
	int flag;
	int num;
	int cc;
	int k,i,j;
	char ch;
	char words[50];
	char id[50];
	cout<<"请输入一段程序:"<<endl;
	ch = getchar ();
	while (ch !='#')
	{
		if( ch<='z' && ch >='a' || ch<='Z' && ch>='A' )
		{
			k=0;
		do
		{
			if( k<49 )
			{
				words[k] = ch ;
				k++ ;
			}
			ch = getchar ();
		}while( ch<='z' && ch >='a' || ch<='Z' && ch>='A'|| ch<='9' && ch>='0' ) ;
		words[k] = '\0' ;
		strcpy( id, words ) ;
		i = 0;
		flag = 13;
		j = flag -1;
		do
		{
			k=(i+j)/2 ;
			cc=strcmp(id, keywords[k]);
			if( cc<0 ) 
			{
				j=k-1 ;
			}
			else if( cc>0 ) 
			{
				i=k+1 ;
			}
			else break ;
		}while( i<=j) ;
		if( i<=j )
		{
			sym=wsym[k] ;
			cout<<"("<<id<<","<<sym<<")"<<endl;
		}
		else
		{
			sym="ident" ;	 
			cout<<"("<<sym<<","<<id<<")"<<endl;
		}
		}
		else if( ch<='9' && ch>='0' )
		{
			num=0; 
			sym="number"; 
			do{
				num=10 * num + ch - '0' ;
				ch = getchar (); 
				}while( ch<='9' && ch>='0' ) ;
			cout<<"("<<"number"<<","<<num<<")"<<endl;
		}
		else if (ch ==' ')
		{
			ch = getchar();
		}
		else if (ch =='+')
		{	sym = "plus";
			cout<<"("<<sym<<","<<" "<<")"<<endl;
			ch = getchar (); 
		}
		else if (ch =='-')
		{	sym = "minus";
			cout<<"("<<sym<<","<<" "<<")"<<endl;
			ch = getchar (); 
		}
			else if (ch =='*')
		{	sym = "times";
			cout<<"("<<sym<<","<<" "<<")"<<endl;
			ch = getchar (); 
		}
			else if (ch =='-')
		{	sym = "slash";
			cout<<"("<<sym<<","<<" "<<")"<<endl;
			ch = getchar (); 
		}
			else if (ch =='=')
		{	sym = "equal";
			cout<<"("<<sym<<","<<" "<<")"<<endl;
			ch = getchar (); 
		}
			else if(ch==',')
		{
				sym="douhao";
				cout<<"("<<sym<<","<<" "<<")"<<endl;
			    ch = getchar (); 
		}
			else if(ch==';')
		{
				sym="fenhao";
				cout<<"("<<sym<<","<<" "<<")"<<endl;
			    ch = getchar (); 
		}
			else if(ch=='(')
		{
				sym="lparen";
				cout<<"("<<sym<<","<<" "<<")"<<endl;
			    ch = getchar (); 
		}
			else if(ch=='}')
		{
				sym="rparen";
				cout<<"("<<sym<<","<<" "<<")"<<endl;
			    ch = getchar (); 
		}
			else if(ch=='{')
		{
				sym="ldakuohao";
				cout<<"("<<sym<<","<<" "<<")"<<endl;
			    ch = getchar (); 
		}
			else if(ch=='}')
		{
				sym="rdakuohao";
				cout<<"("<<sym<<","<<" "<<")"<<endl;
			    ch = getchar (); 
		}
	
   }
	
}

⌨️ 快捷键说明

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