电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

基于LEX的C语言词法分析器

基于LEX的C语言词法分析器_第1页
1/20
基于LEX的C语言词法分析器_第2页
2/20
基于LEX的C语言词法分析器_第3页
3/20
下载后可任意编辑实验二 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|…|ZDigit = 0|…|9Keyword = else|if|int|return|void|whileSpecial 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 ...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

基于LEX的C语言词法分析器

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部