编译原理简介:基本概念

本文介绍了编译器的基本流程,包括词法分析、语法分析和语义分析。词法分析涉及正则表达式和有穷自动机,语法分析有自顶向下和自底向上两种方式,如LL(1)和递归下降法。语义分析则关注类型检查、符号表管理和控制流检查。此外,文章还讨论了形式语言、文法的类型以及中间代码的生成。
摘要由CSDN通过智能技术生成

一、编译总体流程
一个最简单的编译器一般都会经过词法分析,语法分析,代码生成等部分。
1.词法分析:首先要明白所有程序文件都是文本文件。将面向源码的字符流转成 token 流的过程。一般程序将token一个个传给语法分析处理。
2.语法分析:程序根据目标程序语言的文法范式生成语法分析树
3.代码生成:然后再遍历整个语法分析树直接生成代码。生成代码可以直接生成机器码,或者交给虚拟机执行。

二、形式语言与文法
为了理解编译的过程,首先我们要明白什么是形式语言和文法,我们平时写程序的时候都要遵从一定的语法规则。俗话说,没有规矩不成方圆,我们跟随一定的规则去书写程序,而编译器也是根据这些规则来解析程序。

什么是形式语言:
自然语言(Natural Language)就是人类讲的语言,比如汉语、英语和法语。这类语言不是人为设计(虽然有人试图强加一些规则)而是自然进化的。形式语言(Formal Language)是为了特定应用而人为设计的语言,是从语言学衍生而来,作为一种理解自然语言的句法规律。例如数学家用的数字和运算符号、化学家用的分子式等。在计算机科学中,形式语言通常作为定义编程语言和语法的基础,是正式版本的自然语言的子集。
如语言学中语言一样,形式语言一般有两个方面: 语法和语义。专门研究语言的语法的数学和计算机科学分支叫做形式语言理论,它只研究语言的语法而不致力于它的语义。在形式语言理论中,形式语言是一个字母表上的某些有限长字符串的集合。一个形式语言可以包含无限多个字符串。

什么是文法:
文法又叫语法,形式语言有严格的语法(Syntax)规则,例如,3+3=6是一个语法正确的数学等式,而3=+6$则不是,H2O是一个正确的分子式,而2Zz则不是。语法规则是由关于符号(Token)和结构(Structure)的规则所组成的。Token的概念相当于自然语言中的单词和标点、数学式中的数和运算符、化学分子式中的元素名和数字。关于Token的规则称为词法(Lexical)规则,而关于语句结构的规则称为语法(Grammar)规则。
乔姆斯基把文法分成4种类型,即0型,1型,2型,和3型。0型文法也称短语文法,0型文法的能力相当于图灵机(Turing),或者说任何0型语言都是递归可枚举的。1型文法也称上下文有关法,其能力相当于线性界限自动机。2型文法也称上下文无关法,其能力相当于非确定的下推自动机。3型文法也称右线性文法,由于这种文法等价于正规式,所以也称正规文法。从文法描述语言的能力来说,0型文法最强,3型文法最弱。

编程语言的

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值