跳至主要內容
栈式散列符号表

栈式散列符号表(Stacked Hash Symbol Table)是编译原理中常用的符号表实现方式,结合了哈希表的高效查找与栈结构的作用域管理,广泛用于编译器的词法分析和语法分析阶段。

设计思想

  • 哈希表:用于高效存储和查找符号(如变量、函数名等)。
  • 栈结构:用于管理作用域(如函数、代码块、循环等的嵌套)。每进入一个新作用域,压入一层新表;离开作用域时弹出。

工作原理

  1. 进入新作用域时,创建一个新的哈希表并压入栈顶。
  2. 查找符号时,从栈顶向下依次查找,遇到第一个命中即返回。
  3. 插入符号时,只在当前作用域(栈顶哈希表)插入。
  4. 离开作用域时,弹出栈顶哈希表,自动移除该作用域的所有符号。

KSJ大约 1 分钟编译原理
手把手教你构建 C 语言编译器(3)——词法分析器

本文转自 https://lotabout.me/2015/write-a-C-interpreter-3/,如有侵权,请联系删除。

原文内容

手把手教你构建 C 语言编译器(3)- 词法分析器

Table of Contents

  1. 1. 什么是词法分析器
  2. 2. 词法分析器与编译器
  3. 3. 词法分析器的实现
    1. 3.1. 支持的标记
    2. 3.2. 词法分析器的框架
    3. 3.3. 换行符
    4. 3.4. 宏定义
    5. 3.5. 标识符与符号表
    6. 3.6. 数字
    7. 3.7. 字符串
    8. 3.8. 注释
    9. 3.9. 其它
    10. 3.10. 关键字与内置函数
  4. 4. 代码
  5. 5. 小结

KSJ大约 25 分钟编译原理c编译器解释器
LR 语法分析方法

LR 分析是一类自底向上的语法分析方法,广泛应用于编译器的语法分析阶段。

定义

LR(Left-to-right, Rightmost derivation)分析器是一种自底向上、从左到右扫描输入、产生最右推导的分析器。

原理

LR 分析器通过状态机和分析栈维护文法归约过程,能够处理大部分上下文无关文法。

类型

  • LR(0):最基础的 LR 分析器,无向前看符号
  • SLR(1):简单 LR,使用 Follow 集消除冲突
  • LR(1):每个项目带 1 个向前看符号,状态数多
  • LALR(1):合并 LR(1) 同心集,状态数与 SLR(1) 相同

KSJ小于 1 分钟编译原理