编译器和解释器

一、概念

  • 解释器(interpreter): 是一种计算机程序,它将每个高级程序语句转换成机器代码。
  • 编译器(compiler): 把高级语言编写的程序转换成机器码,将人可读的代码转换成计算机可读的代码(0和1)。

二、两者的区别

解释器和编译器的区别

  • 注意:Java既是编译的又是解释的,Java代码本身被编译成目标代码。在运行时,JVM将目标代码解释为目标计算机的机器代码。

三、总结

编译器和解释器的目的是做相同的工作,但在操作过程上不同,编译器以聚合的方式获取源代码,而解释器获取源代码的组成部分,即一条一条的语句。
二者工作流程的差别

名词解释:

与编译原理有关…
在这里插入图片描述

  • 词法分析:lexical analysis,输入源程序串,输出单词符号,即将字符序列转换为 token 序列的过程。进行词法分析的程序 or 函数叫作 词法分析器(lexical analyzer,简称lexer),也叫扫描器 (scanner)。词法分析器一般以函数的形式存在,供 语法分析器 调用。
  • 语法分析:根据高级语言的语法规则对程序的语法结构进行分析。分析上一步得到的单词符号串是否符合语言的语法规则,分析并识别各种语法成分,同时进行语法检查和错误处理,为语义分析和代码生成做准备。
  • 语义分析:基于语义规则,对语法树进行语义分析。包括变量是否定义,类型是否正确等。 主要功能包括建立符号表,进行静态语义检查,发现语义错误。
语义分析的类型:静态语义和动态语义
  • 静态语义:在编译阶段可以检查的语义。e.g.标识符未声明。
  • 动态语义:目标程序运行时(run-time)才能检查的语义。e.g.除零、溢出错误。
语义分析的内容:类型分析、标识符相关信息提取。
语义分析的功能:检查语义错误、构造标识符属性表(符号表)
语法是上下文无关的,语义是上下文相关的。
  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值