• 大小: 6KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2022-09-19
  • 语言: C/C++
  • 标签: C++  编译原理  

资源简介

这是编译原理的语法分析实验,输入格式为 A~Z和+-*/() ,并且以#结尾

资源截图

代码片段和文件信息

// BianYiYuanLi2.cpp: 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include 
#include 

void E(int& TZ std::string& ST);

void ADVANCE(std::string& ST) {
ST.erase(0 1);
}

char SYM(std::string& ST) {
std::string::iterator it = ST.begin();
return *it;
}

void F(int& TZ std::string& ST) {//(SYM >= ‘a‘&&SYM <= ‘z‘) || 
if ((SYM(ST) >= ‘A‘&&SYM(ST) <= ‘Z‘))
{
ADVANCE(ST);
return;
}
else {
if (SYM(ST) != ‘(‘) {
//std::cout << “ERROR“ << std::endl;
TZ = 1;
return;
}
else {

ADVANCE(ST);
E(TZ ST);

if (SYM(ST) != ‘)‘)
{
std::cout << “ERROR“ << std::endl;
TZ = 1;
return;
}
else {
ADVANCE(ST);
return;
}
}
}
}

void T(int& TZ std::string& ST) {
F(TZ ST);
while (SYM(ST) == ‘*‘ || SYM(ST) == ‘/‘) {
ADVANCE(ST);
F(TZ ST);
}
}

void E(int& TZ std::string& ST) {
do {
T(TZ ST);
if (SYM(ST) == ‘+‘ || SYM(ST) == ‘-‘) {
ADVANCE(ST);
}
else {
return;
}
} while (true);
}

int main()
{
while (true) {
std::cout << “Input expression“ << std::endl;

//接受输入的表达式
std::string ST;
std::cin >> ST;

int TZ = 0;

E(TZ ST);

if (SYM(ST) != ‘#‘ || TZ == 1)
{
std::cout << “ERROR AGAIN!“;
TZ = 0;
}
else {
std::cout << “RIGHT AGAIN!“;
}
system(“pause“);
}

return 0;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-06-18 20:58  编译原理--语法分析 实验\
     目录           0  2018-06-18 20:58  编译原理--语法分析 实验\BianYiYuanLi2\
     文件        2800  2018-06-18 20:42  编译原理--语法分析 实验\BianYiYuanLi2\BianYiYuanLi2.cpp
     文件        8223  2018-06-18 18:36  编译原理--语法分析 实验\BianYiYuanLi2\BianYiYuanLi2.vcxproj
     文件        1258  2018-06-18 18:36  编译原理--语法分析 实验\BianYiYuanLi2\BianYiYuanLi2.vcxproj.filters
     文件         165  2018-06-18 18:36  编译原理--语法分析 实验\BianYiYuanLi2\BianYiYuanLi2.vcxproj.user
     文件         328  2018-06-18 18:36  编译原理--语法分析 实验\BianYiYuanLi2\stdafx.cpp
     文件         366  2018-06-18 18:36  编译原理--语法分析 实验\BianYiYuanLi2\stdafx.h
     文件         370  2018-06-18 18:36  编译原理--语法分析 实验\BianYiYuanLi2\targetver.h
     文件        1453  2018-06-18 18:36  编译原理--语法分析 实验\BianYiYuanLi2.sln

评论

共有 条评论