语法分析器可以发现语法错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语法分析器可以发现语法错误相关的知识,希望对你有一定的参考价值。

参考技术A 可以。语法分析器通常是作为编译器或解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构。语法分析器可以发现语法错误,语法分析器使用一个独立的词法分析器从输入字符流中分离出一个个的“单词”,并将单词流作为其输。语法是语言学的一个分支,研究按确定用法来运用的"词类"、"词"的曲折变化或表示相互关系的其他手段以及词在句中的功能和关系。

3.1语法分析-语法分析简介

前端

  • 源程序–<词法分析器–记号–语法分析–抽象语法树–语义分析器>–中间表示

语法分析器的任务

  • 记号流和语言的语法规则–>语法分析器–>语法树

错误例子分析

  • 语法错误处理
if ((x >5)
    y = "hello"
else
    z = 1,
  • 经过语法分析后程序会报错

    • Syntax Error: line 1, missing )
    • Syntax Error: line 2, missing ;
    • Syntax Error: line 4, expecting ; but got ,
  • 语法树的构建

if ((x >5)
    y = "hello"
else
    z = 1,
  • 经过语法分析会构建出一棵语法树:

线路图

  • 数学理论:上下文无关文法(CFG)
    • 描述语言语法规则的数学工具
  • 自顶向下分析
    • 递归下降分析算法(预测分析算法)
    • LL分析算法
  • 自底向上分析
    • LR分析算法

以上是关于语法分析器可以发现语法错误的主要内容,如果未能解决你的问题,请参考以下文章

PHP代码静态分析工具PHPStan

语法分析]

3.1语法分析-语法分析简介

3.1语法分析-语法分析简介

符号表和抽象语法树是啥关系?两者在编译器设计中是不是必需

编译原理--语法分析之LR分析法的简单实现