博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
0916 编程实验一 词法分析程序
阅读量:5744 次
发布时间:2019-06-18

本文共 4584 字,大约阅读时间需要 15 分钟。

#include
#include
int ddd(char a[100],int i){ switch(a[i]) { case '+':case '-':case '*':case '/':case '=':case ';':case '(':case ')': { return(1); } case ':': { if(a[i+1]=='=') { return(2); } else return(1); } case '<': { if(a[i+1]=='>') { return(2); } else if(a[i+1]=='=') { return(2); } else return(1); } case '>': { if(a[i+1]=='=') { return(2); } else return(1); } default: return(0); break; }}int ccc(char a[100],int i){ switch(a[i]) { case '+': { printf("(13,+)"); return(1); } case '-': { printf("(14,-)"); return(1); } case '*': { printf("(15,*)"); return(1); } case '/': { printf("(16,/)"); return(1); } case ':': { if(a[i+1]=='=') { printf("(18,:=)"); return(2); } else printf("(17,:)"); return(1); } case '<': { if(a[i+1]=='>') { printf("(21,<>)"); return(2); } else if(a[i+1]=='=') { printf("(22,<=)"); return(2); } else printf("(20,<"); return(1); } case '>': { if(a[i+1]=='=') { printf("(24,>=)"); return(2); } else printf("(23,>"); return(1); } case '=': { printf("(25,=)"); return(1); } case ';': { printf("(26,;)"); return(1); } case '(': { printf("(27,()"); return(1); } case ')': { printf("(28,)"); return(1); } default: return(0); break; }}void number(char a[10]){ int i=0; char text[10]; while(a[i]!='\0') { text[i]=a[i]; i++; } text[i]='\0'; printf("(11,%s)",text);}void fing(char a[10]){ int i=0; char text[10]; while(a[i]!='\0') { text[i]=a[i]; i++; } text[i]='\0'; if( strcmp(text,"begin")==0) { printf("(1,begin)"); } else if( strcmp(text,"if")==0) { printf("(2,if)"); } else if( strcmp(text,"then")==0) { printf("(3,then)"); } else if( strcmp(text,"while")==0) { printf("(4,while)"); } else if( strcmp(text,"do")==0) { printf("(5,do)"); } else if( strcmp(text,"end")==0) { printf("(6,end)"); } else { printf("(10,%s)",text); }} main(){ int i=0,j=-1,l=0,x=0; char a[100],text[10]; printf("输入源程序,以#号结束:"); printf("\n"); gets(a); while(1) { if(a[i]>='0'&&a[i]<='9') { while(a[i]>='0'&&a[i]<='9') i++; l=0; for(++j;j
='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z') {l=0; for(i;a[i]>='a' && a[i]<='z' ||a[i]>='A'&&a[i]<='Z';i++) { text[l]=a[i]; l++; } i--; text[l]='\0'; fing (text); } else { if(a[i]=='#') { printf("(0,#)"); break; } x=ccc(a,i); if(x==1) { j=i; } else if(x==2) { i++; j=i; } } i++; } printf("\n");}

转载于:https://www.cnblogs.com/range/p/4826971.html

你可能感兴趣的文章
Android 开发应该掌握的 Proguard 技巧
查看>>
是时候放弃 Spark Streaming, 转向 Structured Streaming 了 ...
查看>>
企业级 Spring Boot 教程 (十七)上传文件
查看>>
sqli-labs 下载、安装
查看>>
Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收!
查看>>
RouteReuseStrategy angular路由复用策略详解,深度刨析路由复用策略
查看>>
Zabbix4.0 for PostgreSQL (下篇):后续部署及添加监控项
查看>>
JavaScript 代码简洁之道
查看>>
基于django的视频点播网站开发-step6-个人中心功能
查看>>
Tomcat两种部署方式
查看>>
Kubernetes API 分析 ( Kube-apiserver )
查看>>
4-学会刷Wi-Fi模块固件(刷AT指令固件)
查看>>
ASP.NET Core 2 学习笔记(五)静态文件
查看>>
Button 使用Command 按钮置灰未更新
查看>>
Ansible windows客户端安装及部分模块使用(学习笔记十六)
查看>>
PostgreSQL控制台以竖行显示
查看>>
CSS-Flex 布局教程:实例篇
查看>>
Java和移动端交互
查看>>
Java SSM 客户管理 商户 管理系统 库存管理 销售报表 项目源码
查看>>
排序优化——如何实现一个通用的、高性能的排序函数
查看>>