语言处理程序

C是属于编译型语言,Java是解释型语言,他们两个的共同点是都有词法分析语法分析语义分析的一个过程,然后C可以直接生成目标代码后执行程序,但是Java不能,Java是先通过解释器,然后边解释边执行,他不会生成目标代码,并且相比于C,他的执行效率要低一些,但是C有一个致命缺点,就是他的可移植性差,如果我从windows上写一个程序,他只能在Windows上跑,不能在Linux上运行,但是Java可以,他的灵活性要好,可移植性也高。

词法分析

词法分析,是将输入的文本分解成一个个有意义的基本单位,这些基本单位被成为词素(Token),词法分析器负责识别这些词素。

语法分析

语法分析,也称为句法分析,它是在词法分析的基础上,根据语言的语法规则,将词素组合成一个结构化的表示形式,他对句子中的结构进行分析,来确定其组成部分(如单词与短语)之前的关系,并识别出这些组成部分在句子中所扮演的角色。通过语法分析,可以构建出句子的结构树,这种结构树通常被称为句法树,它能够清晰的展示出句子中各个成分之间的层次关系。

语义分析

语义分析,是在语法分析的基础上,进一步检查和理解语法树的含义,确保程序的逻辑正确性。语法分析器会进行类型检查,符号表管理等操作。

  • 动态语义分析
    • 发生在程序运行时
    • 也叫动态语义错误
    • 陷入死循环、变量取零时做除数、引用数组元素下标越界等错误。
  • 静态语义分析
    • 编译时所发现的程序错误
    • 分为语法错误和静态语义错误
    • 语法错误包括:单词拼写错误,标点符号错误,表达式中缺少操作数,括号不匹配等有关语言结构上的错误
    • 静态语义分析:运算符与运算对象类型不合法等错误
总结说明

词法分析将输入字符串分解成词素(如关键字(例:int,如果输入的是nit,则词法分析也可以检查出错误)、标识符、运算符等);语法分析根据语法规则将这些词素组合成结构化的语法树,(例:语言结构出错、if....end if 不匹配,缺少分号、括号不匹配、表达式缺失操作数等);而语义分析则进一步检查这个结构化的输入是否有意义,例如变量是否已声明、类型是否匹配等(例:运算符和运算类型不符合,取余时用浮点数等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值