永发信息网

LL(1)文法E->TE’ E->+TE’ |ε T->FT’ T’->*FT’ |ε F->(E) | i 要求用C++编写器预测分析程序,测试用例i*i+i#,

答案:1  悬赏:0  手机版
解决时间 2021-07-30 08:39
LL(1)文法E->TE’ E->+TE’ |ε T->FT’ T’->*FT’ |ε F->(E) | i 要求用C++编写器预测分析程序,测试用例i*i+i#,请问谁知道啊?急用,谢谢
最佳答案
#include <stdio.h>
#include <stdlib.h>

#define error( c ) { printf( "match failed for '%c'", c ); exit(1); }
#define lbr() { if ( *next != '(' ) error( '(' ); match( "(" ); ++next; }
#define rbr() { if ( *next != ')' ) error( ')' ); match( ")" ); ++next; }
#define match( msg ) { puts( msg ); }
char* next;
void E(); void EE(); void T(); void TT(); void F();

void E()
{
match( "TE" );
T(); EE();
}

void EE()
{
char c = *next;
if( c == '+' ) {
++next;
match( "+TE'\t+" );
T(); EE();
}
}

void T()
{
match( "FT'" );
F(); TT();
}

void TT()
{
char c = *next;
if ( c == '*' ) {
++next;
match( "*FT'\t*" );
F(); TT();
}
}


void F()
{
char c = *next;
if ( c == '(' ) {
match( "(E)" );
lbr(); E(); rbr();
} else if ( c == 'i' ) {
match( "i\ti" );
++next;
} else
error( 'i' );
}

int main()
{
next = "i*i+i";
E();
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我很在乎使我从男孩变成男人的第一个女孩,而
三星L100曝光时间太长怎么办?
珠晖区衡阳李记烧烤(东风北路)地址在哪里啊
人类文明的根本是什么 ?
如何丶去愛?
怎样才能讨好老公?
谁能提供个dreamwear作品,感激不尽!
鼓楼区开封一品足浴哪位知道具体地址啊
请问寻仙仙派8阶升7阶的当值任务里芝草和五宁
社区班子建设情况汇报,社区阵地建设意义是什
我的QQ农场怎么开通不了?
世界上有预知未来吗?
fan读第二声 汉字有哪些…写多点
东风区佳木斯东风区公安分局信访法律咨询服务
dnf中什么去判断一个装备的价值?详细
推荐资讯
商水县周口蜜雪冰城这个地址怎么能查询到,着
什么是胚胎工程
推荐几款电子词典!
贵阳什么地方培训民族舞蹈?
如何救活宠物
广西为什么叫八桂大地,爆笑广西老表,哥们这
进攻三秒和防守三秒是什么意思啊
酒吧有什么好吃的食物
英语十二点怎么写
召唤师多少级开始单刷?
wow FB CD问题
C盘打不开了?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?