LR1语法分析C++实现:三、demo 1 加乘计算器-无语义函数

转载请注明出处:https://blog.csdn.net/hhhhhhhhhhkkkkkkkkkk

demo 1 加乘计算器-无语义函数

#include<stdio.h>
#include"_lr1.h"
enum e_non
{
 e_entry=-0xffff,
 e_exp,
};
t_grammar g=
{
 {
  {e_entry,{e_exp},nullptr,0},
  {e_exp,{e_exp,'+',e_exp},nullptr,0},
  {e_exp,{e_exp,'*',e_exp},nullptr,0},
  {e_exp,{'i'},nullptr,0},
 },
 {
  {'+',{1,e_ass_left}},
  {'*',{2,e_ass_left}},
  {'i',{3,e_ass_left}},
 },
 nullptr
};
int main(int argc, const char*argv[])
{
 grammar_make_pri_ass(g);
 print_grammar(g);
 auto cluster = cluster_build(g, 0);
 printf("---------------------\n");
 print_cluster(cluster, g.sens);
 printf("---------------------\n");
 t_analyzer ana;
 ana.analysis(std::vector<int>{ 'i','+','i','*','i',0 }, cluster, g, nullptr);
 getchar();
 return 0;
}

下面是结果截图:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
可以看到,分析结果的第三行浮点数不正确,因为我们根本没写语义分析函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值