下载后可任意编辑实验二 C-语言的词法分析器(基于 Lex)1
课程设计目标自动构造 C-语言的的词法分析器,要求能够掌握编译原理的基本理论,,理解编译程序的基本结构,掌握编译各阶段的基本理论和技术,掌握编译程序设计的基本理论和步骤
,增强编写和调试高级语言源程序的能力,掌握词法分析的基本概念和实现方法,熟悉 C-语言的各种 Token
分析与设计基于 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 中的规则定义构造定义识别