资源简介
将实验一“词法分析”的输出结果,作为表达式语法分析器的输入,进行语法解析,对于语法正确的表达式,报告“语法正确”; 对于语法错误的表达式,报告“语法错误”, 指出错误原因。
把语法分析器设计成一个独立一遍的过程。

代码片段和文件信息
#include “stdafx.h“
#include
#include
#include
#include
using namespace std;
static int rg=1;
struct newsym
{
char restr[15];
};
newsym sym[50];
int E(int nnewsym *sym);
int T(int nnewsym *sym);
int D(int nnewsym *sym);
int E(int nnewsym *sym)
{
if (!strcmp(sym[n].restr“plus“) || !strcmp(sym[n].restr“minus“))
{
n++;
if(!strcmp(sym[n-2].restr“lparen“))
{
cout<<“缺少标识符或数字“< rg=0;
}
if (!strcmp(sym[n].restr“ident“) ||!strcmp(sym[n].restr“number“)|| !strcmp(sym[n].restr“lparen“))
{
n=T(nsym);
}
}
else if (!strcmp(sym[n].restr“ident“) ||!strcmp(sym[n].restr“number“)|| !strcmp(sym[n].restr“lparen“))
{
n=T(nsym);
}
if((!strcmp(sym[n].restr“ident“) ||!strcmp(sym[n].restr“number“))&&(!strcmp(sym[n-1].restr“ident“) ||!strcmp(sym[n-1].restr“number“)))
{
n++;
cout<<“缺少运算符“< rg=0;
}
if((!strcmp(sym[n].restr“ident“) ||!strcmp(sym[n].restr“number“))&&!strcmp(sym[n-1].restr“rparen“))
{
n++;
cout<<“缺少运算符!“< rg=0;
}
while (!strcmp(sym[n].restr“plus“)||!strcmp(sym[n].restr“minus“))
{
n++;
n=T(nsym);
}
return n;
}
int T(int nnewsym *sym)
{
if (!strcmp(sym[n].restr“ident“) ||!strcmp(sym[n].restr“number“)|| !strcmp(sym[n].restr“lparen“))
{
n=D(nsym);
}
else
{
cout<<“缺少标识符或数字“< rg=0;
}
while (!strcmp(sym[n].restr“times“)||!strcmp(sym[n].restr“slash“))
{
n++;
n=D(nsym);
}
return n;
}
int D(int nnewsym *sym)
{
if (!strcmp(sym[n].restr“ident“) ||!strcmp(sym[n].restr“number“) )
{
n++;
}
else if (!strcmp(sym[n].restr“lparen“))
{
n++;
n=E(nsym);
if (!strcmp(sym[n].restr“rparen“))
{
n++;
}
else
{
cout<<“缺少右括号“< rg=0;
}
}
else
{
cout<<“缺少标识符或数字“< rg=0;
}
return n;
}
int main()
{
ifstream infile(“2.txt“);
string buffer;
int ijn;
for (n=0;n<=49;n++)
{
sym[n].restr[0]=‘\0‘;
}
n=0;
while (!infile.eof() && infile >> buffer)//没有到文件末尾,读取文件内容到buffer
{
i=j=0;
if(buffer[0]==‘(‘)
{
while(buffer[i+1]!=‘‘)
{
i++;
sym[n].restr[j]=buffer[i];
j++;
}
sym[n].restr[j]=‘\0‘;
n++;
}
} //把字符串放入二维数组
n=0j=0;
n=E(nsym);
int right_answer=1;
if (!strcmp(sym[n-1].restr“\0“))
{
right_answer=0;
}
else
{
right_answer=1;
}
if (rg==1 && !strcmp(sym[n].restr“\0“) && n!=0 && right_answer==1)
{
cout<<“语法正确!“< system(“pause“);
}
else
{
cout<<“语法错误!“< system(“pause“);
}
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2751 2014-01-09 12:32 2\2\2.cpp
文件 92 2014-01-09 12:38 2\2\2.txt
文件 4356 2014-01-04 15:00 2\2\2.vcxproj
文件 1325 2014-01-04 15:00 2\2\2.vcxproj.filters
文件 143 2014-01-04 15:00 2\2\2.vcxproj.user
文件 406 2014-01-04 15:00 2\2\Debug\2.exe.em
文件 472 2014-01-11 12:32 2\2\Debug\2.exe.em
文件 381 2014-01-11 12:32 2\2\Debug\2.exe.intermediate.manifest
文件 60 2014-01-14 16:10 2\2\Debug\2.lastbuildstate
文件 214248 2014-01-11 12:32 2\2\Debug\2.obj
文件 1179648 2014-01-11 12:32 2\2\Debug\2.pch
文件 192 2014-01-04 15:00 2\2\Debug\2_manifest.rc
文件 2978 2014-01-11 12:32 2\2\Debug\cl.command.1.tlog
文件 26418 2014-01-11 12:32 2\2\Debug\CL.read.1.tlog
文件 1798 2014-01-11 12:32 2\2\Debug\CL.write.1.tlog
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
文件 2 2014-01-11 12:32 2\2\Debug\li
............此处省略35个文件信息
- 上一篇:DNS隐秘隧道pcap包
- 下一篇:uif65d.zip
相关资源
- MP3文件ID3v2ID3v2APEv2标签读取
- 课程作业:模拟仓库管理系统
- 一个简单实用个人日记管理系统
- 带时间温度显示的室内灯光控制系统
- 成绩管理系统(数据结构)
- FIR低通滤波器 ccs运行环境
- 编译原理LR(0)语法分析
- 编译原理实验:词法分析,语法分析
- C malloc函数用法
- 编译原理语法分析器、词法分析器
- 嵌入式局域网聊天系统客户端
- 算法竞赛入门经典 第2版刘汝佳+高清
- 基于单片机的GPS定位及显示系统设计
- 链表实现通讯录管理系统
- PowerShell-6.2.1-win-x86.zip
- 源程序阅读与调试课程设计报告--学生
- 谁说程序员不浪漫?!基于easyX图形库
- 编译原理课设c编译器
- TINY+编译器 改编自原版TINY
- 编译原理课程设计 while do循环语句翻
- MCP3421 STM32 Driver
- ADS1100 STM32 Driver
- 单片机89c52与MLX90614红外的测温程序
- stm32f103AES加密 cbc模式
- 单片机 点阵 字模提取软件
- C高级编程讲义-传智播客
- NOIP必学内容之前缀和与差分颜鸿宇
- Skyline高效检索算法实现.zip
- 天津理工大学编译原理实验2
- STM8S103系列IO模拟串口通信实现真正串
评论
共有 条评论