- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验报告
实验一 词法分析程序实现
一、实验目的与要求
通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。
表I 语言中的各类单词符号及其分类码表
:= 14 IS + 15 PL - 16 MI * 17 MU / 18 DI
识别表I所列语言中的部分单词的DFA及相关的语义过程
将表I单词集中的整常数改为无符号常数,无符号常数的单词分类码助记符:UCON
描述无符号数的正规文法和状态转换图:
无符号数的右线性文法G1[无符号数]如下:
〈无符号数〉→ d〈余留无符号数〉
〈无符号数〉→ ·〈小数部分〉
〈无符号数〉→ d
〈余留无符号数〉→ d〈余留无符号数〉
〈余留无符号数〉→ ·〈十进小数〉
〈余留无符号数〉→ E〈指数部分〉
〈余留无符号数〉→ d
〈余留无符号数〉→ ·
〈十进小数〉→ E〈指数部分〉
〈十进小数〉→ d〈十进小数〉
〈十进小数〉→ d
〈小数部分〉→ d〈十进小数〉
〈小数部分〉→ d
〈指数部分〉→ d〈余留整指数〉
〈指数部分〉→ +〈整指数〉
〈指数部分〉→ -〈整指数〉
〈指数部分〉→ d
〈整指数〉→ d〈余留整指数〉
〈整指数〉→ d
〈余留整指数〉→ d〈余留整指数〉
〈余留整指数〉→ d
图所示为上述文法的状态转换图,其中编号0、1、2、…、6分别代表非终结符号无符号数、余留无符号数、十进小数、小数部分、指数部分、整指数及余留整指数。
文法G1[无符号数]的状态转换图
包含语义处理过程的识别无符号数的状态矩阵
源程序
#includestdio.h
#includectype.h
#includestdlib.h
#includestring.h
#includemath.h
#define BEGIN 1
#define END 2
#define IF 3
#define THEN 4
#define ELSE 5
#define ID 6
#define INT 7
#define LT 8
#define LE 9
#define EQ 10
#define NE 11
#define GT 12
#define GE 13
#define PL 14
#define MI 15
#define MU 16
#define DI 17
#define IS 18
#define TOKEN_SIZE 64
#define TAB_SIZE 5
char TOKEN[TOKEN_SIZE];
extern int lookup(char *);
extern void out(int ,char*);
extern void report_error();
int GetChar(void);
int EXCUTE(int,int);
int LEX(void);
#define LETTER 0
#define DIGIT 1
#define POINT 2
#define OTHER 3
#define POWER 4
#define PLUS 5
#define MINUS 6
#define ClassNo 100
#define ClassOther 200
#define EndState -1
int w,n,p,e,d;
int Class;
int ICON;
float FCON;
static int CurrentState;
char ch;
//信息表保存5个关键字
typedef struct
{
int ad;
char id[6];
}info_ele;
info_ele Tab[TAB_SIZE]={{1,begin},{2,end},{3,if},{4,then},{5,else}};
void scanner_example(FILE *fp) //扫描器函数
{
int i,c;
ch=fgetc(fp);
if(isalpha(ch)) //是否为字母
{
TOKEN[0]=ch;
i=1;
ch=fgetc(fp);
while(isalnum(ch)) //是否为字母或数字
{
TOKEN[i]=ch;
i++;
c
您可能关注的文档
- 汉英机车车辆词典讲稿.doc
- 第六讲科学对待人生环境讲稿.ppt
- 汉语国际教育历史、现状与未来讲稿.doc
- 第六讲相关性与Copula函数讲稿.ppt
- 第六课_____飞天梦想讲稿.ppt
- 桥梁的发展与艺术讲稿.doc
- 第六课人的认识从何而来讲稿.ppt
- 桥梁工程考试整理+包括计算题讲稿.doc
- 第六课终身受益的讲稿.ppt
- 焊接技师培训讲稿.ppt
- 2025年香格里拉县辅警招聘考试备考题库附答案.docx
- 2025年福建莆田市市场监督管理局公开选聘下属事业单位工作人员4人备考题库附答案.docx
- 2025年赣州市体育局下属事业单位赣州市全民健身服务中心招聘特殊专业技术人员5人备考题库附答案解析.docx
- 2025江西省通信产业服务有限公司南昌分公司班主任岗位招聘1人笔试历年题库带答案解析.docx
- 2025江苏省体育局训练中心招聘专业技术人员1人备考历年题库带答案解析.docx
- 2024年兴县辅警招聘考试真题附答案.docx
- 2025江苏常州纺织服装职业技术学院长期招聘42人历年参考试题附答案解析.docx
- 渣石合同模板(3篇).docx
- 展柜订单合同模板(3篇).docx
- 债券合同模板(3篇).docx
最近下载
- 病态窦房结综合征护理查房.pptx VIP
- 《生物监测》教学课件—01利用水生生物监测水质.ppt VIP
- 光伏工程建设标准强制性条文实施计划方案-范本.pdf VIP
- 青海省西宁市2024-2025学年八年级上学期期末调研测试物理试卷.docx VIP
- JB/T7688.1-2008冶金起重机技术条件第1部分:通用要求.pdf VIP
- 中储粮-内环流控温储粮技术标准-2017.pdf VIP
- 电竞场馆建设规范.pdf VIP
- LST-粮油储藏 内环流储粮技术规程.pdf VIP
- JGJ215-2010:建筑施工升降机安装、使用、拆卸安全技术规程.pdf VIP
- 入党志愿书(全电子版).pdf VIP
原创力文档


文档评论(0)