编译原理——实验壹预习——TINY语言的词法分析

实验目的
构造tiny语言的词法分析器(扫描器),要求利用第三方的lex工具进行构造。实验结果:构造出的扫描器,能够读入教材样例中给出的tiny语言的示例代码,分解成token输出。
Experimental Requirement
Build the lexical parser (a scanner) of TINY language, using the Lex tool of third party. The experimental result Scanner can receive the sample program of Tiny language, and output is a sequence of tokes that are defined by regular expression.

预习要求:
Preview requirements:
1.查阅各种专业文献,针对任意二种现代程序设计语言编译器的词法分析技术,找出各自的标志性的特征点,并加以比较分析和比较,指出其优缺点,并试图给出自已的结论。
Referring to professional literatures, aiming at the lexical analysis technology of any two modern programming language compilers, finds out their respective features, compares them, points out their advantages and disadvantages, and tries to give your Evaluation and conclusions.

答:Flex的设计目标在于生成一个高性能的扫描器,对处理大量rule 做了优化。除了用——C 选项对表格进行压缩外,还有一些option/action 会影响到扫描器的速度。比如JavaScript,就不适合使用flex,JavaScript 正则表达式字面量和除法操作符的二义性, 很难用 flex 解决, 一般把真正含义的辨清延迟到 parse 阶段.

2.请描述自已拟定的实验计划和步骤,以及对输入和输出的设计。
Please design your experimental plan and procedures, as well as the design of input and output of the SCANNER

3.选择三方工具,阅读其使用说明,并尝试建立起工作环境。
Choose the LEX tools, read their instructions, and try to establish a working environment.

答:主要采用第三方工具flex进行词法分析。flex用来生成扫描器,其中扫描器就是可以识别文本中词法模式的程序。具体流程为:flex读取给定的输入文件,或标准输入读取信息来生成一个扫描器。信息以正则表达式和C代码组成,这种形式称为规则。flex生成C源代码文件lex.yy.c,其中定义了一个函数yylex()。这个文件通过编译,并用-lfl 链接生成可执行文件。当可执行文件被执行时,它分析输入中可能存在的符合正则表达的内容。当找到任何一个与正则表达式相匹配内容时,相应的C 代码将被执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值