小C语言--词法分析程序

编译原理 C语言词法分析程序的设计与实现 词法分析程序 目录 一、 实验题目 二、 实验要求 三、 程序设计说明 四、 源程序 五、 可执行程序 六、 测试报告: 1. 输入 2. 输出 3. 分析说明 一、实验题目 C语言词法分析程序的设计与实现 二、实验要求 可以识别出用C语言编写的源程序中的每个单词符号,并以记号的 形式输出每个单词符号。 可以识别并跳过源程序中的注释。 可以统计源程序中的语句行数、各类单词的个数、以及字符总数,并输出统计结果。 检查源程序中存在的词法错误,并报告错误所在的位置。 对源程序中出现的错误进行适当的恢复 阅读详情
#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;
}
《编译原理》陈火旺——词法分析程序c语言实现完整版 编译原理——词法分析程序c语言实现完整版 词法分析程序 一、实验目的 根据所学知识设计、编制并调试一个词法分析程序,加深对词法分析概念的理解以及编写代码的锻炼。 二、实验内容 (1)分组完成,每组由3-4位同学组成 (2)确定源语言L和编写程序的语言P (3)用正规式描述L的词法规则 (4)根据正规式构造给出识别单词的DFA M (5)根据M,用语言P编写L的词法分析程序 三、实验过程 首先,本实... 阅读详情

相关推荐

A - 小C语言--词法分析程序--SDUT

A - 小C语言--词法分析程序 Description 小C语言文法 1. <程序>→<main关键字>(){<声明序列><语句序列>} 2. <声明序列>→<声明序列><声明语句>|<声明语句>|<空> 3. <声明语句>→<标识符表>; 4. <标识符表>→<标识符>,<标识符表>|<标识符> 5. <语句序列&.

°渐行渐远っ的博客 2761

词法分析器(纯c语言)

编译原理 简单词法分析器(纯C语言)

qq_35853567的博客 7976

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;

2301_82113338的博客 627

Windows Server 2016上,手把手教你搭建MDT 8456自动化部署环境(含ADK 2004与WDS配置)

本文详细指导在Windows Server 2016上搭建MDT 8456自动化部署环境,涵盖ADK 2004与WDS配置全流程。通过标准化操作系统部署、应用程序静默安装和驱动程序注入,实现企业级自动化部署解决方案,显著提升IT运维效率。特别针对兼容性问题和权限陷阱提供实战解决方案。

weixin_29876033的博客 387

CY7C68013 C0模式启动

C0或是C2启动的目的,是更改USB芯片的ID信息,并把固件载入到芯片内部RAM中运行。C0模式是指只从EEPROM中载入USB ID信息,因为只有ID信息(8个字节),所以只需要一个小容量的EEPROM即可。当然大容量的EEPROM也可以使用C0模式,但是小容量的EEPROM只能使用C0模式启动。如下图所示: 使用小容量的EEPROM要将A0,A1,A2接地。 这里我用了个24LC01,容量1

Fezl的博客 1740

实现一个词法分析器

一、实验目的: 设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。 二、实验要求: 1.对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。 2.本程序自行规定: (1)关键字"begin","end","if","then","...

dd1235555555的博客 404

Logisim实战:手把手教你搭建GB2312汉字字库(附完整电路图)

本文提供了一份详尽的Logisim实战指南,手把手教你如何利用存储芯片,通过位扩展和字扩展技术,构建一个完整的GB2312汉字字库。文章深入浅出地讲解了从编码原理、系统架构设计到具体电路实现与调试的全过程,是学习计算机组成原理和数字电路设计的绝佳实践项目。

k6l7m8n9的博客 808

使用c语言编写词法分析程序,用C语言编写一个简单的词法分析程序

问题描述:用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表。如果产生词法错误,则显示错误信息、位置,并试图从错误中恢复。简单的恢复方法是忽略该字符(或单词)重新开始扫描。相关词法规则::=::=::=::=::=::=::=::=a|b|c|……|x|y|z::=0|1|2|3|4|5|6|7|8|9::=+|-::=*|/::=|!...

weixin_35231615的博客 8208

不用买显示器!用USBMMID虚拟显示器软件在Win10上扩展4个屏幕(保姆级教程)

本文提供了一份详细的保姆级教程,指导用户如何在Windows 10系统上,无需购买额外硬件,通过USBMMID虚拟显示器软件扩展出多达4个虚拟屏幕。文章深入解析了虚拟显示器的核心原理,并基于微软IDD框架,手把手教学从软件获取、环境检查到安装配置的全过程,帮助开发者和多任务用户构建高效、免费的虚拟多屏工作站,实现生产力的飞跃。

backprop5master的博客 660

2025年最新自动化/控制保研夏令营&预推免面试真题分享(东南大学苏州校区/华东理工/南航/天大)

笔者来2021级本科自动化专业,以下部分将介绍我在夏令营以及预推免期间发生经历和问题。

Control Everything 2583

C语言程序的词法分析,c语言编写的词法分析程序

《c语言编写的词法分析程序》由会员分享,可在线阅读,更多相关《c语言编写的词法分析程序(12页珍藏版)》请在人人文库网上搜索。1、include #include #include #include #define SPACE 0x20 /空格键#define CHANGE c /转义字符#define STRING S /引号里的字符串#define BOUNDARY B /界符#define ...

weixin_40007548的博客 429

【OpenClaw从入门到精通】第12篇:OpenClaw 2026子代理实战全攻略:用ACP架构搭建多智能体协作网络(附完整代码)

本文聚焦OpenClaw 2026.3.2版本默认启用的ACP(Agent Communication Protocol)子代理机制,从核心概念、底层原理到企业级实操全流程拆解。先解析子代理的定义、ACP协议通信原理及主从代理分工逻辑,再提供环境准备的详细步骤(版本验证、配置调整、技能安装);随后通过三个递进式虚拟案例(客服分流、智能文档处理、企业级招聘全流程),提供可直接运行的完整代码、执行结果及技术要点解析;最后补充子代理管理运维、性能优化与避坑指南。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2382

编制C语言子集的词法分析程序,直接分析法编制C语言子集词法分析程序.doc

直接分析法编制C语言子集词法分析程序词法分析实验目的使用 直接分析法编制C语言子集的词法分析程序实验要求利用C语言编制递归下降分析程序,并对简单语言进行语法分析。2.1 待分析的简单语言的语法用扩充的BNF表示如下:⑴::=beginend⑵::={;}⑶::=⑷::=ID:=⑸::={+ | -}⑹::={* | /⑺::=ID | NUM | ()2.2 实验要求说明输入单词串,以“#”结束,...

weixin_42502537的博客 814

【学习系列】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注解。

DeveloperMrMeng的博客 1499

当C#遇见声音魔法:从麦克风到文字的0.1秒奇幻漂流

为什么选300Hz?因为人声基频通常在85-255Hz,但清脆的“啊”可能到2kHz,所以300Hz是安全区!(参考知识库[1])

墨夶的博客 365

【编译原理】简单词法分析程序的实现C语言

编译原理课程的实验二:编制简单词法分析程序。 实验内容:通过了解词法分析程序的功能,设计词法分析程序,通过逐个字符的扫描和分解,能够识别出一个一个单词以及单词的分类;删除注释并进行词法检查,报告所发现的错误(比如标识符不能以数字开头,123aaa就不是合法的标识符),建立符号表。 实验说明:单词通常分为五种类型: (1)基本字:(关键字,保留字)如if else int break等 (2)运算符:如+ - * / = ...

qq_51639901的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

c语言词法分析程序的设计与实现,C语言实现词法分析程序设计参考

C语言实现词法分析程序设计参考 词法分析 一、 实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、 实验要求 2.1 待分析的简单的词法 (1)关键字: begin if then while do end 所有的关键字都是小写。 (2)运算符和界符 : = + - * / >= = ; ( ) # (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式...

weixin_42511098的博客 2082

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C语言词法分析程序(小C语言)

词法分析程序

weixin_40220242的博客 1538

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)输出:单词序列。二.单词的属性和表格单词的属性主要分为五大部分:...

weixin_35696321的博客 322

c语言词法分析程序实验报告,实验一词法分析程序设计与实现

实验一词法分析程序设计与实现一、实验目的:加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析。二、实验内容:自定义一种程序设计语言,或者选择已有的一种高级语言(C语言),编制它的词法分析程序。词法分析程序的实现可以采用任何一种编程工具。三、实验要求:1. 对单词的构词规则有明确的定义;2. ...

weixin_33443932的博客 3733
上一篇: 表达式语法分析——递归子程序法
下一篇: Dao层,Service层,Servlet层运用的自我理解
Young9518
博客等级 码龄11年 7粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值