编译原理(二)语法分析器

2022-11-16,,,

从软件工程角度看,词法分析和语法分析的分离有如下好处

  • 简化设计
  • 编译器的效率会改进(词法分析器主要处理字符流)
  • 编译器的可移植性加强(例如:向上的箭头,不同的分析器可以用不同的字符,这个只涉及到词法,降低了耦合性)
  • 便于编译器前端的模块划分

语法分析器对编译器的错误处理做一个概述

  • 词法错误,如标识符、关键字或运算符的拼写错误
  • 语法错误,如算数表达式的括号不匹配
  • 语义错误:如算符作用于不相容的运算对象
  • 编辑错误:如无穷的递归调用

语法分析器对错误处理的基本目标

  • 清楚而准确地报告错误的出现,并尽量少出现伪错误
  • 迅速地从每个错误中恢复过来,以便诊断后面的错误
  • 它不应该使正确程序的处理速度降低太多

分析器的生成器


为了C编译器能准确报告yylex函数中错误的位置,需要在生成的程序y.tab.c中使用编译命令#line来记录行号