当前位置:   article > 正文

c语言语法词法 语义,转:编译原理之词法分析、语法分析、语义分析

选择部分c语言的语法成分,设计其词法语法语义分析程序。

词法分析(Lexical

analysis或Scanning)和词法分析程序(Lexical

analyzer或Scanner)

词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用lex等工具自动生成。

语法分析(Syntax

analysis或Parsing)和语法分析程序(Parser) 语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.

语义分析(Syntax

analysis)

语义分析是编译过程的一个逻辑阶段.

语义分析的任务是对结构(即符合语法树推导的)上正确的源程序进行上下文有关性质的审查, 进行类型审查.例如一个C程序片断:

int arr[2],b;

b = arr *

10;

源程序的结构是正确的.

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

Lex

一个词法分析程序的自动生成工具。它输入描述构词规则的一系列正规式,然后构建有穷自动机和这个有穷自动机的一个驱动程序,进而生成一个词法分析程序.

Yacc

一个语法分析程序的自动生成工具。它接受语言的文法,构造一个LALR(1)分析程序.因为它采用语法制导翻译的思想,还可以接受用C语言描述的语义动作,从而构造一个编译程序.

Yacc 是 Yet another compiler compiler的缩写.

源语言(Source

l

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/599370
推荐阅读
相关标签
  

闽ICP备14008679号