第一句子大全,网罗天下好句子,好文章尽在本站!

编译器入门 语法分析 简介

时间:2020-04-03

在这个过程中,要做语法检查,查看代码是否有语法错误,并提示修改

友情提示:本文共有 1167 个字,阅读大概需要 3 分钟。

语法分析(parse),是把词法分析(lex)生成的一个个词word,按照语法规则转化成语句,并生成抽象语法树(AST)的过程。

在这个过程中,要做语法检查,查看代码是否有语法错误,并提示修改。

语法分析程序,实际上并不怎么好写。

一般情况下,代码都含有大量的不同类型的语句嵌套,以及同类语句的递归嵌套,和递归函数调用。

这让各种类型的语句扭在一起,很难使用单一的语句类型去分析,而不得不多管齐下,还要互相调用,实际形成了深层次的复杂递归算法。

语法分析涉及的常见语句类型,大概有这几种:

1,表达式,

这是最重要,也是最常见的语句之一。

表达式,是由变量、常量、运算符、函数调用、数组索引、指针解引用、对象的成员变量、对象的成员函数调用等,组成的“复杂”式子。

数组索引[],函数调用(),指针解引用*,对象的成员变量->,对象成员函数调用obj->fun(),也都是特殊的运算符,其中最后一个要使用2个运算符和对象的指针变量名及成员函数名,本身就是一个表达式。

当然,简单的算术表达式,只包含变量、常量,和加减乘除模等简单运算。

2,声明和定义语句,

这是用来声明变量、函数、数据结构,以及定义函数、数据结构的内容的语句。

C语言只有结构体struct,C++的类class和结构体struct除了默认权限分别是private和public之外,差不多也是一回事。

以下统一叫类吧:(

函数和类的声明和定义可以分开,也可以写在一起。

定义本身就已经做了声明。

在语法分析时,定义和声明的区别是,定义在声明语句之后以“左大括号{”开始内容定义,并以“右大括号}”结束,而声明以“分号;”结束这行语句。

当然也可以使用其他符号,例如python就使用了“冒号:”和“换行n”。

变量的声明和定义,实际是一码事。变量的类型本身就已经提供了足够的信息。

3,if else语句,

就像它的英文名字一样,条件语句,用来选择代码执行的不同分支。

4,while循环语句,

5,for循环语句,

6,break,continue语句,

与if else语句搭配用在循环里,break也用在switch case里。

7,switch case语句,

类似if else语句,又略有区别,大多数情况下可以互相替代。

8,goto语句,

给了程序很大的灵活性,又破坏了程序的结构性的语句,尽量少用。

在中间代码优化阶段,goto写成的非结构化循环,会大大提高循环分析的难度,因为它可以导致循环有多个出口,甚至多个入口。

9,块,

由大括号{}标示开始和结束,其中可以含有其他语句,也可以含有子块,它本身还可以被其他语句包含。

这里就暗含着递归嵌套,也是导致语法分析复杂性的关键来源之一。

源代码里的嵌套,在语法分析时就会引起递归。

语法分析的复杂,主要是两个来源,一是表达式本身的复杂,二是各种语句可以通过块互相嵌套。

本文如果对你有帮助,请点赞收藏《编译器入门 语法分析 简介》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
编译器入门 语法分析 数据结构

编译器入门 语法分析 数据结构

语法分析的目的,是构建抽象语法树(AST)。在语法分析之前,需要先准备与AST有关的数据结构,也就是编程语言教程里经常提到的类型、变量、运算符、表达式、语句、函数、作用域等。编译器内还多了一个,抽象语法树的节...

2023-01-28 #经典句子

学日语怎么入门 初级日语入门学习方法详细一点的步骤!

学日语怎么入门 初级日语入门学习方法详细一点的步骤!

学日语怎么入门:日语入门主要分为三个阶段:一、日语五十音图二、发音、单词、语法的积累三、基础教材的选择初级日语入门学习方法详细一点的步骤:一、日语五十音图是每个学日语的小伙伴必经之路,没有什么好说的,...

2023-01-11 #经典句子

多角度分析高考日语入门难不难?

多角度分析高考日语入门难不难?

高考日语入门对于英语成绩不怎么理想的准高考生来说,选择日语是比较不错的选择。一是总体难度介于N3-N2之间,即中级难度;其次,70%的日语词汇是汉字词汇,根据教育部考试大纲,考生词汇量在2500左右。这两个特点使得日...

2023-06-06 #经典句子

入门级的英语学习材料有哪些(语法篇)

入门级的英语学习材料有哪些(语法篇)

...信等书面材料的正确表达,能进行大段英文书面输出当然入门阶段的级别还达不到完全掌握的程度,我们在入门阶段主要任务是分析句型,各长难句句型能分析对了,再进行下一阶段训练。这个阶段的训练方法除了依靠语法书本...

2011-11-25 #经典句子

高中英语句子成分讲解超详细!语法入门必备 不可错过!

高中英语句子成分讲解超详细!语法入门必备 不可错过!

句子成分是英语语法的基础知识,是学习复杂语法的基础。句子成分分析是理解和写对复杂句子的基本功,对阅读和写作的进阶有直接的作用。句子成分分析总是和主要语法知识如谓语与非谓语,各种从句融合在一起。因此,学...

2022-11-14 #经典句子

根据二语习得理论 入门期注意事项 提高期如何学习英语

根据二语习得理论 入门期注意事项 提高期如何学习英语

依据二语习得理论,入门期主要是建立常用英语词汇和声音的神经网络联系,学习的过程主要以名词和动词为主。名词要建立实物与声音的一对一对应关系,这个过程,学习者通过耳朵听读音,眼睛看四幅画面来猜测声音表达的...

2023-06-20 #经典句子

如何高质量自学高考日语?

如何高质量自学高考日语?

...,大家可以看一看哪些是自己合适的!一、高考日语自学入门。高招日语自学入门,毫无疑问是五十音,听名字感觉五十音是有五十个音,其实不止是噢。日语的发音很容易掌握,元音只有5个,分别是、、、字。所有日语的单...

2016-02-20 #经典句子

语法|如何快速入门定语从句?

语法|如何快速入门定语从句?

定语从句也是一个比较难缠的语法点之一。今天教给大家三招,轻松搞定定语从句。形容词修饰名词,比较简单明了,但如果想表达点复杂的情况,就用到了定语从句。 定语从句就是用一个句子来充当一个很复杂的形容词...

2023-07-10 #经典句子