编译原理——LL(1)语法分析

       直接输入根据已知文法构造的分析表M,对于输入的文法和符号串,所编制的语法分析程序应能正确判断此串是否为文法的句子,并要求输出分析过程。


C++实现如下:

#include<bits/stdc++.h>
using namespace std;
const int L_NUM=100000;
const int MAX=100;	//预测分析表容量 
const string ERROR="出错! 该文法无法识别该语言!";
string str[MAX][MAX];	//预测分析表 
int gone=0; 	//代表步骤 
char any[MAX];		//分析栈 
int top=-1;		//分析栈指针 
queue<char> s;	//保存输入串的队列 
int n;	//非终结符个数  
int t;	//终结符个数  
map<char,int> row;	//分析表行号映射 
map<char,int> col;	//分析表列号映射 
map<char,int>::iterator rit;	//访问行映射的迭代器
map<char,int>::iterator cit;	//访问列映射的迭代器
void terror();	//出错处理 
void anysit();	//语法分析 
void inputx();	//输入函数 
void outputx();		//输出函数 
char c0;	//保存开始符号
char c;		//暂存终结符或非终结符
string s0;	//暂存产生式/输入串  

int main(){
	inputx();
	anysit();
	return 0; 
}
void terror(){
	cout<<ERROR<<endl;
} 
void inputx(){
	cout<<&#
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白马无缰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值