编译原理实验二——语法分析(预测分析)

本次实验旨在实现LL(1)分析的控制程序,使用表驱动方法处理文法E→TE′等。设计要求包括处理词法分析输出的二元式序列,进行错误检测,并提供至少两个测试用例验证分析效果。实验涉及的文法涵盖了基本算术表达式,并定义了终结符号i作为标识符。
摘要由CSDN通过智能技术生成

[实验任务]
1、实现LL(1)分析中控制程序(表驱动程序);
2、完成以下描述算术表达式的LL(1)文法的LL(1)分析程序(LL(1)分析表见教材)。
G[E]:
        E→TE′
        E′→ATE′|ε
        T→FT′
        T′→MFT′|ε
        F→ (E)|i
        A→+|-
        M→*|/
     说明:终结符号i为用户定义的简单变量,即标识符的定义。
[设计要求]
1、输入串应是词法分析的输出二元式序列,即某算术表达式“实验项目一”的输出结果。输出为输入串是否为该文法定义的算术表达式的判断结果。
2、LL(1)分析过程应能发现输入串出错。
3、设计两个测试用例(尽可能完备,正确和出错),并给出测试结果。

demo.cpp

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

#define SIZE 100

char stack[SIZE];
int bottom = 0, top = 0;

void push(char ch) {
 if (top != SIZE) {
  stack[top] = ch;
  top++;
 }
}

char p

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值