【软考】-词法分析、语法分析、语义分析、

前言:

  前两天串这一部分内容的时候,对于词法分析,语法分析,语义分析这三项不是很熟悉,所以就简单总结下,希望能够帮助理解;

内容:

1、词法分析:

  词法分析是编译过程的第一个阶段,这个阶段的任务可以看成是-从左到右一个字符一个字符地读入源程序,从中识别出一个个“单词”符号,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号);

  通过词法分析程序实现上述读入源程序,识别符号的任务,词法分析过程依据的是语言的词法规则;

  输出:词法分析程序输出的“单词”常以二元组的方式输出,即单词种别和单词自身的值;

  认识:词法, 定义组成语言的单词, 是语言中最小单元;

2、语法分析:

  语法分析是编译过程的一个逻辑阶段,此阶段的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等;

  语法是用户数据与控制信息的结构与格式

  认识:语法-- 将单子组织成有含义的短语和句子的规则,正如英语翻译中的语法;

3、语义分析(Syntax analysis)

  语义分析是编译过程的一个逻辑阶段,语义是解释控制信息每个部分的意义,它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应,此阶段的任务是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查;

  收集类型信息供后面的代码生成阶段使用;

  语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配;

  认识:语义-- 结合上下文,可以推导出语句的真实含义,也就是我们输入中文之后翻译出来的英文含义,或输入英文,翻译出来的中文;

4、举例认识:

  我现在要翻译一句话,如下图所示:
在这里插入图片描述
  词法分析:想要获取这句话的意思,那么首先我需要输入信息,系统进行一个个单词识别,也就是录入源程序,这属于词法分析;

  语法分析:这句话录入程序,接下来系统就要进行识别每一个单词分别都是什么格式,英语语法的主谓宾、定状补,进而确定要翻译的语句的结构;

  语义分析:获取了句子的单词,词性,接下来就是最后的输出阶段啦,语义分析,通过语义分析输出该翻译字句的中文含义:“她很漂亮宛如一个小仙女”;

小结:

  到这里整个语句的翻译完成了,词法分析,语法分析,语义分析的小总结也要告一段落啦;

  认识不到位或偏颇之处,还望大家不吝赐教,一起学习;

  • 35
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
1. 课程设计目标 实验建立C-编译器。只含有扫描程序(scanner)和语法分析(parser)部分。 2. 分析与设计 C-编译器设计的整体框架,本实验实现扫描处理和语法分析程序(图中粗黑部分)。 2.1 、扫描程序scanner部分 2.1.1系统设计思想 设计思想:根据DFA图用switch-case结构实现状态转换。 惯用词法: ① 语言的关键字:else if int return void while ② 专用符号:+ - * / < >= == != = ; , ( ) [ ] { } /* */ ③ 其他标记是ID和NUM,通过下列正则表达式定义: ID = letter letter* NUM = digit digit* letter = a|..|z|A|..|Z digit = 0|..|9 大写和小写字母是有区别的 ④ 空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字。 ⑤ 注释用通常的C语言符号/ * . . . * /围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套 说明:当输入的字符使DFA到达接受状态的时候,则可以确定一个单词了。初始状态设置为START,当需要得到下一个token时,取得次token的第一个字符,并且按照DFA与对此字符的类型分析,转换状态。重复此步骤,直到DONE为止,输出token类型。当字符为“/”时,状态转换为SLAH再判断下一个字符,如果为“*”则继续转到INCOMMENT,最后以“*”时转到ENDCOMMENT状态,表明是注释,如果其他的则是字符停滞于当前字符,并且输出“/”。 2.1.2程序流程图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值