《编译原理》实验预习报告——TINY语言的词法分析

编程类 专栏收录该内容
9 篇文章 0 订阅

实验目的

构造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 正则表达式字面量和除法操作符的二义性, 很难用 lex 解决, 一般只用 lex 做很少的事情, 然后把真正含义的辨清延迟到 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是一个用来生成扫描器(scanners)的工具,其中扫描器就是可以识别文本中词法模式的程序。具体流程为:flex读取给定的输入文件,或标准输入(当没有给定文件名时)读取信息来生成一个扫描器。信息以正则表达式和C代码组成,这种形式称为规则(rule)。flex生成C源代码文件lex.yy.c,其中定义了一个函数yylex()。这个文件通过编译,并用-lfl 链接生成可执行文件。当可执行文件被执行时,它分析输入中可能存在的符合正则表达的内容。当找到任何一个与正则表达式相匹配内容时,相应的C 代码将被执行。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值