资源简介
这是编译原理的语法分析实验,输入格式为 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
- 上一篇:MFC数据库ODBC编程-教务管理系统
- 下一篇:语法分析C实现
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 编译原理c语言编译器
- 编译原理实验-词法分析(c语言代码)
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
评论
共有 条评论