#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char key[6][10]={"int","main","for","if","else","while"};
void check(char p[])
{
int i=0;
int j=0;
if(p[0]>='0'&&p[0]<='9')
{
printf("(integer,%s)\n",p);
j=1;
}
else
{
for(i=0;i<6;i++)
{
if(strcmp(p,key[i])==0)
{
printf("(keyword,%s)\n",key[i]);
j=1;
break;
}
}
}
if(!j) printf("(identifier,%s)\n",p);
}
int main()
{
char p[2005];
while(gets(p))
{
int i =0;
char f[2005];
int j=0;
for(i=0;p[i]!='\0';i++)
{
if(p[i]==' '||p[i]=='\t'||p[i]=='\n')
{
if(j!=0)
{
f[j]='\0';
check(f);
j=0;
}
}
else if(p[i]=='+'||p[i]=='-'||p[i]=='*'||p[i]=='/')
{
if(j!=0)
{
f[j]='\0';
check(f);
j=0;
}
printf("(operator,%c)\n",p[i]);
}
else if(p[i]=='='&&p[i+1]=='='||p[i]=='<'&&p[i+1]=='='||p[i]=='>'&&p[i+1]=='='||p[i]=='!'&&p[i+1]=='=')
{
if(j!=0)
{
f[j]='\0';
check(f);
j=0;
}
printf("(operator,%c%c)\n",p[i],p[i+1]);
i++;
}
else if(p[i]=='='||p[i]=='<'||p[i]=='>')
{
if(j!=0)
{
f[j]='\0';
check(f);
j=0;
}
printf("(operator,%c)\n",p[i]);
}
else if(p[i]=='{'||p[i]=='}'||p[i]=='('||p[i]==')'||p[i]==','||p[i]==';')
{
if(j!=0)
{
f[j]='\0';
check(f);
j=0;
}
printf("(boundary,%c)\n",p[i]);
}
else
{
f[j++]=p[i];
}
}
}
return 0;
}
相关推荐
A - 小C语言--词法分析程序--SDUT
A - 小C语言--词法分析程序 Description 小C语言文法 1. <程序>→<main关键字>(){<声明序列><语句序列>} 2. <声明序列>→<声明序列><声明语句>|<声明语句>|<空> 3. <声明语句>→<标识符表>; 4. <标识符表>→<标识符>,<标识符表>|<标识符> 5. <语句序列&.
词法分析器(纯c语言)
编译原理 简单词法分析器(纯C语言)
C语言开发课程设计词法分析器源代码.zip
C语言开发课程设计词法分析器源代码介绍 课程设计:词法分析器; 实验1:词法分析实验 实验2:语法分析实验 课程设计 设计任务: 使用词法分析的自动生成工具 Flex 生成 C/C++语言的词法分析器 ,当输入C/C++源代码文件时,即后缀为 c/cpp 的文件,程序输出后缀为 tok 的文本性文件。涉及知识点:词法分析,Flex 工具使用。 环境配置: flex Dev-C++ 实验一: 将C/C++源代码转换为网页文件,在浏览器打开时,代码以高亮语法表示显示。 实验二:结合递归下降语法分析,根据输入的算术表达式,输出对应表达式值。
c语言词法分析器
cout << "(分界符," << jibo << ")" << endl;cout << "(标识符," << jibo << ")" << endl;cout << "(关键字," << jibo << ")" << endl;cout << "(字面量," << sum << ")" << endl;
Windows Server 2016上,手把手教你搭建MDT 8456自动化部署环境(含ADK 2004与WDS配置)
本文详细指导在Windows Server 2016上搭建MDT 8456自动化部署环境,涵盖ADK 2004与WDS配置全流程。通过标准化操作系统部署、应用程序静默安装和驱动程序注入,实现企业级自动化部署解决方案,显著提升IT运维效率。特别针对兼容性问题和权限陷阱提供实战解决方案。
CY7C68013 C0模式启动
C0或是C2启动的目的,是更改USB芯片的ID信息,并把固件载入到芯片内部RAM中运行。C0模式是指只从EEPROM中载入USB ID信息,因为只有ID信息(8个字节),所以只需要一个小容量的EEPROM即可。当然大容量的EEPROM也可以使用C0模式,但是小容量的EEPROM只能使用C0模式启动。如下图所示: 使用小容量的EEPROM要将A0,A1,A2接地。 这里我用了个24LC01,容量1
实现一个词法分析器
一、实验目的: 设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。 二、实验要求: 1.对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。 2.本程序自行规定: (1)关键字"begin","end","if","then","...
Logisim实战:手把手教你搭建GB2312汉字字库(附完整电路图)
本文提供了一份详尽的Logisim实战指南,手把手教你如何利用存储芯片,通过位扩展和字扩展技术,构建一个完整的GB2312汉字字库。文章深入浅出地讲解了从编码原理、系统架构设计到具体电路实现与调试的全过程,是学习计算机组成原理和数字电路设计的绝佳实践项目。
使用c语言编写词法分析程序,用C语言编写一个简单的词法分析程序
问题描述:用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表。如果产生词法错误,则显示错误信息、位置,并试图从错误中恢复。简单的恢复方法是忽略该字符(或单词)重新开始扫描。相关词法规则::=::=::=::=::=::=::=::=a|b|c|……|x|y|z::=0|1|2|3|4|5|6|7|8|9::=+|-::=*|/::=|!...
不用买显示器!用USBMMID虚拟显示器软件在Win10上扩展4个屏幕(保姆级教程)
本文提供了一份详细的保姆级教程,指导用户如何在Windows 10系统上,无需购买额外硬件,通过USBMMID虚拟显示器软件扩展出多达4个虚拟屏幕。文章深入解析了虚拟显示器的核心原理,并基于微软IDD框架,手把手教学从软件获取、环境检查到安装配置的全过程,帮助开发者和多任务用户构建高效、免费的虚拟多屏工作站,实现生产力的飞跃。
2025年最新自动化/控制保研夏令营&预推免面试真题分享(东南大学苏州校区/华东理工/南航/天大)
笔者来2021级本科自动化专业,以下部分将介绍我在夏令营以及预推免期间发生经历和问题。
C语言程序的词法分析,c语言编写的词法分析程序
《c语言编写的词法分析程序》由会员分享,可在线阅读,更多相关《c语言编写的词法分析程序(12页珍藏版)》请在人人文库网上搜索。1、include #include #include #include #define SPACE 0x20 /空格键#define CHANGE c /转义字符#define STRING S /引号里的字符串#define BOUNDARY B /界符#define ...
【OpenClaw从入门到精通】第12篇:OpenClaw 2026子代理实战全攻略:用ACP架构搭建多智能体协作网络(附完整代码)
本文聚焦OpenClaw 2026.3.2版本默认启用的ACP(Agent Communication Protocol)子代理机制,从核心概念、底层原理到企业级实操全流程拆解。先解析子代理的定义、ACP协议通信原理及主从代理分工逻辑,再提供环境准备的详细步骤(版本验证、配置调整、技能安装);随后通过三个递进式虚拟案例(客服分流、智能文档处理、企业级招聘全流程),提供可直接运行的完整代码、执行结果及技术要点解析;最后补充子代理管理运维、性能优化与避坑指南。
编制C语言子集的词法分析程序,直接分析法编制C语言子集词法分析程序.doc
直接分析法编制C语言子集词法分析程序词法分析实验目的使用 直接分析法编制C语言子集的词法分析程序实验要求利用C语言编制递归下降分析程序,并对简单语言进行语法分析。2.1 待分析的简单语言的语法用扩充的BNF表示如下:⑴::=beginend⑵::={;}⑶::=⑷::=ID:=⑸::={+ | -}⑹::={* | /⑺::=ID | NUM | ()2.2 实验要求说明输入单词串,以“#”结束,...
【学习系列】SAP RAP 2:创建第一个RAP应用
本文介绍了从零开始创建基于SAP RAP(ABAP RESTful Application Programming Model)的Fiori应用的完整流程。首先说明了学习RAP需要结合官方文档和教程,并提供了相关资源链接。文章详细讲解了开发环境的准备要求,包括系统版本、开发工具和基本知识。重点演示了如何通过8个步骤创建支持CRUD操作和草稿功能的RAP应用:1)创建数据库表;2)定义CDS视图实体;3)创建投影视图;4)定义行为;5)创建行为投影;6)定义服务;7)绑定服务;8)添加UI注解。
当C#遇见声音魔法:从麦克风到文字的0.1秒奇幻漂流
为什么选300Hz?因为人声基频通常在85-255Hz,但清脆的“啊”可能到2kHz,所以300Hz是安全区!(参考知识库[1])
【编译原理】简单词法分析程序的实现C语言
编译原理课程的实验二:编制简单词法分析程序。 实验内容:通过了解词法分析程序的功能,设计词法分析程序,通过逐个字符的扫描和分解,能够识别出一个一个单词以及单词的分类;删除注释并进行词法检查,报告所发现的错误(比如标识符不能以数字开头,123aaa就不是合法的标识符),建立符号表。 实验说明:单词通常分为五种类型: (1)基本字:(关键字,保留字)如if else int break等 (2)运算符:如+ - * / = ...
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
c语言词法分析程序的设计与实现,C语言实现词法分析程序设计参考
C语言实现词法分析程序设计参考 词法分析 一、 实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、 实验要求 2.1 待分析的简单的词法 (1)关键字: begin if then while do end 所有的关键字都是小写。 (2)运算符和界符 : = + - * / >= = ; ( ) # (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式...
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
C语言词法分析程序(小C语言)
词法分析程序
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
C语言程序的词法分析,C语言词法分析小程序———焦童.doc
C语言词法分析小程序———焦童沈阳航空航天大学编 译 实 验 报 告实验报告名称:C语言小子集的词法分析程序院(系):计算机学院专 业:计算机科学与技术班 级学 号:2012040101064姓 名:焦童一.实验要求:(1)功能:实现 C 语言小子集程序的词法分析。(2)输入: c 语言小子集的程序片段。(3)输出:单词序列。二.单词的属性和表格单词的属性主要分为五大部分:...
c语言词法分析程序实验报告,实验一词法分析程序设计与实现
实验一词法分析程序设计与实现一、实验目的:加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析。二、实验内容:自定义一种程序设计语言,或者选择已有的一种高级语言(C语言),编制它的词法分析程序。词法分析程序的实现可以采用任何一种编程工具。三、实验要求:1. 对单词的构词规则有明确的定义;2. ...
2761



被折叠的 条评论
为什么被折叠?



