美文网首页源码与文档分享
Linux环境下的针对PL0语言的语法词法语义分析

Linux环境下的针对PL0语言的语法词法语义分析

作者: UlricaLee | 来源:发表于2019-08-04 15:13 被阅读0次

摘 要

此次编译原理课程设计,我利用flex工具进行PL/0语言的词法分析、自己用C++语言实现了LR语法分析、语义分析以及中间代码生成,我选择的是布尔表达式文法,对符合文法的布尔表达式能够产生相应四元式,处理了控制结构的真链与假链,对错误的表达式能够给出错误提示。

鉴于flex工具原本来自Unix以及个人日常习惯,本实验开发环境选用Linux,代码在Ubuntu16.10中测试通过。

关键字:flex;词法分析;Linux;语法分析;中间代码生成;真假链

引 言

编译原理是一门实践性比较强的学科,学习了课本上理论知识,阅读了书后示例PL/0编译程序,此次课程设计针对PL/0语言进行了词法分析、语法分析及布尔表达式的中间代码(四元式)生成。其中PL/0的词法分析程序的功能是为语法语义分析提供单词,把输入的字符串形式的源程序分割成一个个单词符号传递给语法语义分析;而语法分析的任务是识别单词符号序列是否符合给定的语法规则。实验中在语法分析过程中需要用到flex工具,这个工具源于Unix和Linux,很多同学使用Windows还需要配置相关环境,我日常使用Linux,因此选用它作为编程环境,免去了不必要的麻烦,配置较为方便。

一、实验目的

实现对布尔表达式的词法分析、语法分析、语义分析并产生四元式中间代码,完成真假链的回填及合并。

1.1 词法分析部分

利用C++和flex工具设计编写一个词法分析程序,实现对标志符、数字、保留字和算符等一系列符号的识别,用于后面做语法分析和语义分析;

1.2 语法分析部分

采用LR(0)语法分析方法,设计、开发如下文法描述语言的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,加深课堂相关理论教学内容的理解,提高语法分析方法的实践能力。语法分析完成之后可用于语义分析。

1.3 语义分析部分

基于以上两步词法和语法分析的工作,采用一边归约一边建立语义栈并做语义分析的方法,分析给出的布尔表达式是否符合相应文法,最后产生四元式 ,实现真假链的回填及合并 。

点击下载源码

相关文章

  • Linux环境下的针对PL0语言的语法词法语义分析

    摘 要 此次编译原理课程设计,我利用flex工具进行PL/0语言的词法分析、自己用C++语言实现了LR语法分析、语...

  • 编译原理三——语义分析

    语义分析和中间代码生成 1、概述 1、和语法分析、词法分析的同时进行进行词法检查、语法检查一样,语义分析也伴随语义...

  • 程序设计语言|高级语言源程序的编译过程

    高级语言源程序的编译过程通常分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。 1.词法分...

  • JS淬炼: Syntax Parser

    一门语言的执行,大致经历下面这些过程:词法分析 -- 语法分析 -- 语义分析 -- 中间代码生成 -- 优化代码...

  • 编译原理基础知识汇总

    前端: 词法分析 -> 语法分析 -> 语义分析后端: 生成中间代码 -> 优化 -> 生产目标代码 词法分析:有...

  • JavaScript的运行机制

    编译 (解析) 对于传统编译型语言(例如:Java)来说,编译步骤分为:词法分析->语法分析->语义检查->代码优...

  • 1 Nodejs01 预学

    1、计算机语言、编程/程序语言的区别:词法分析、语法分析、语义分析;-> 底层涉及编译原理 (1).计算机能接受的...

  • 编译器做了什么

    词法分析 语法分析 语义分析 中间语言生成 目标代码生成与优化 其中包括六个步骤:1. 扫描 2. 语法分析 3....

  • [转载]JavaScript 语法解析、AST、V8、JIT

    对于常见编译型语言(例如:Java)来说,编译步骤分为:词法分析->语法分析->语义检查->代码优化和字节码生成。...

  • 实现简易的C语言编译器(part 10)

    前面我们已经详细分析并实现了简易C语言的前处理、词法分析、语法分析和语义分析过程,最终得到了一棵没有语法错...

网友评论

    本文标题:Linux环境下的针对PL0语言的语法词法语义分析

    本文链接:https://www.haomeiwen.com/subject/lgkydctx.html