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

📄 by2.cpp

📁 递归下降分析法构造的语法分析机 能够判断科学计数法 可判别的运算符为+-*/()
💻 CPP
字号:

#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 
#include"scaner.h"


void scaner(); 
void lrparser(); 
void factor(); 
void expression(); 
void term(); 
void factor(); 
void start();
int f=0; 



void main() 
	{ 
	FILE *fpin;
	fpin=fopen("1.txt","r");
	fread(prog,1,600,fpin);
	fclose(fpin);
	p=0;  
	printf("语法分析结果:\n");
	scaner();
	start();

	}

void expression() 
	{ 
	term(); 
	while(syn==13||syn==14) 
		{ 
		scaner(); 
		term(); 
		} 
	}

void term() 
	{ 
	factor(); 
	while(syn==15||syn==16) 
		{ 
		scaner(); 
		factor(); 
		} 
	} 


void factor() 
	{ 
	if(syn==10||syn==11) 
		scaner(); 
	else if(syn==27) 
		{ 
		scaner(); 
		expression(); 
		if(syn==28) 
		scaner();
	
		
		else  
			{ 
			printf("Error:缺少')'错误!\n"); 
	
		
			f=1; 
			} 
		} 
	else 
		{ 
		printf("Error:输出表达式错误!\n");
	
		f=1; 
		} 
	
	} 

void lrparser() 
	{ 

	if(syn==10||syn==11||syn==27) 
		{ 
		expression() ;
			{
				if(syn==26 && (f==0)) 
				printf("success!\n");
							

			else  
				{ 
				if(f!=1) 
					{ 
					printf("Error:未知!\n"); 
					f=1; 
					} 
				} 
			} 
		} 
 
	} 

void start()
	{
	
	while(syn!=0)
		{
			lrparser(); 
			if(f==1){

				while(syn!=26)
					{
					scaner();
					}
				scaner();
				scaner();
				f=0;
				}
			else scaner();			
			}
	}

⌨️ 快捷键说明

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