- 27
- 0
- 约2.89万字
- 约 5页
- 2017-06-30 发布于河南
- 举报
基于LEXC语言词法分析器
实验二 C-语言的词法分析器(基于Lex)
1. 课程设计目标
自动构造C-语言的的词法分析器,要求能够掌握编译原理的基本理论,,理解编译程序的基本结构,掌握编译各阶段的基本理论和技术,掌握编译程序设计的基本理论和步骤.,增强编写和调试高级语言源程序的能力,掌握词法分析的基本概念和实现方法,熟悉C-语言的各种Token。
。
2. 分析与设计
基于Parser Genarator的词法分析器构造方法
Lex输入文件由3个部分组成:定义集(definition),规则集(rule)和辅助程序集(auxiliary routine)或用户程序集(user routine)。这三个部分由位于新一行第一列的双百分号分开,因此,Lex输入文件的格式如下
{definitions}
%%
{rules}
%%
{auxiliary routines}
而且第一部分用“%{”和“%}”括起来。
第一和第三个部分为C语言的代码和函数定义,第二个部分为一些规则。
定义正则表达式如下
ID = letter letter*
NUM = digit digit*
Letter = a|…|z|A|…|Z
Digit = 0|…|9
Keyword = else|if|int|return|void|while
Special symbol = +|-|*|/||=||=|==|!=|=|;|,|(|)|[|]|{|}|/*|*/
White space = “ ”
Enter = \n
在lex中的构造
letter [A-Za-z]
digit [0-9]
id ({letter}|[_])({letter}|{digit}|[_])*
error_id ({digit})+({letter})+
num {digit}+
whitespace [ \t]+
enter [\n]+
在Lex中的规则定义构造
定义识别保留字规则
int|else|return|void|if|while
{Upper(yytext,yyleng);
printf(%d 行 ,lineno);
printf(%s reserved word\n,yytext);}//保留字
定义识别数字规则
{num}
{printf(%d 行 ,lineno);
printf(%s NUM\n,yytext);}//数字
定义识别专用符号规则
,|;|(|)|{|}|*|/|+|-|||=|=|==|!=|=|/*|*/
{printf(%d 行 ,lineno);
printf(%s special symbol\n,yytext);}//特殊符号
定义识别标识符规则
{id}
{printf(%d 行 ,lineno);
printf(%s ID\n,yytext);}//标识符
定义识别错误的字符串规则
当开头为数字的后面为字母的字符串时,是错误的标识符。
{error_id}
{printf(error:%s\n,yytext);}//以数字开头的字符自动报错
定义忽略空格规则
{whitespace}
{/* skip whitespace */}//忽略空格
定义忽略回车规则
{enter}
{lineno++;}//遇到回车自动加行号忽略
辅助程序集中包括
主函数main ()和辅助函数toupper()。
3. 程序代码实现
Lex代码
//定义集,包括头文件和变量定义
%{
#include ctype.h
#include stdio.h
#include string.h
#include stdlib.h
int lineno=1;//定义行号
%}
//定义正则表达式
letter [A-Za-z] //字母
digit [0-9] //数字
id ({letter}|[_])({letter}|{digit}|[_])* //开头为字母的标识符
error_id ({digit})+({letter})+ //开头为数字的错误标识符
num {digit}+ //数字集合
whitespace [ \t]+ //空格
enter [\n]+ //回车
//定义识别规则
%%
//识别保留字
int|else|return|void|if|while
{Upper(yytext,yyleng);
printf(%d 行 ,
您可能关注的文档
- 失眠原因与预防.doc
- 夸夸我同学作文指导.doc
- 咨询工程师继续教育试题与答案108356.doc
- 品《六国论》结构.ppt
- 命制一份有“地理味”试卷 江建波.ppt
- 咨询工程师《方法与实务》涉与项目决策分析与评价考点.doc
- 品质保证与食品安全协议书.doc
- 哲学唯物辩证法练习题与答案.doc
- 和宝宝一起做游戏大全(0-3岁).doc
- 太行山高可以呼远_太行精神理论特质和时代价值.pdf
- 2026年及未来5年内中国液体氩气行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国黄铜合页行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国竹工艺家具行业投资前景及策略咨询研究报告.docx
- 2025年中国微机数显自动分析仪市场调查研究报告.docx
- 2026年及未来5年内中国微尘白色粉笔行业投资前景及策略咨询研究报告.docx
- 2025年中国微电脑型压胶机市场调查研究报告.docx
- 2026年及未来5年内中国数字化等功游泳训练测试系统行业投资前景及策略咨询研究报告.docx
- 2025年中国圆形花瓶市场调查研究报告.docx
- 2026年及未来5年内中国植物纤维静淀过滤器行业投资前景及策略咨询研究报告.docx
- 2025年中国超音波手套机市场调查研究报告.docx
最近下载
- 四川省2025年中考数学真题试卷十五套附答案.pdf VIP
- 《数据库原理与应用》课程标准.pdf VIP
- 本科论文毕设-基于JAVA酒店管理系统毕业设计论文.doc VIP
- 2025年德州职业技术学院单招笔试数学试题库含答案解析.docx VIP
- 氟化物微纳复合玻璃与透明陶瓷:设计原理、制备工艺与性能研究.docx VIP
- 2025海上风电系统智能运维的数字孪生技术(英文).pdf VIP
- 2025年德州职业技术学院单招《数学》真题(重点)附答案详解.docx VIP
- 牵引供电变电所-分区所-AT所.pdf VIP
- 投标产品质量、供货、售后服务、残次品退换承诺方案.docx VIP
- 子宫肌瘤的诊治中国专家共识解读.docx VIP
原创力文档

文档评论(0)