Skip to main content

Parser Glossary

Abbr.Wordcn
BNFBackus–Naur form巴科斯范式 - 1959 John Backus
EBNFextended BNF扩展巴科斯范式 - ISO-14977
DFADeterministic finite automaton确定有限状态自动机
NFANondeterministic finite automaton非确定有限状态自动机
CFGContext free grammar上下文无关语法
TDPLTop-Down Parsing Language
LL(k)Left-to-right, Leftmost derivationtop-down - 1970s
LLRLL-regular
LRLeft-to-right, Rightmost derivation in reversebottom-up - 1965 Donald Knuth
DCFGDeterministic Context Free Grammar
PEGParsing expression grammar解析表达文法 - 2004 Bryan Ford
ANTLRANother Tool for Language Recognition
LALRLook-Ahead LR parser简化版的 LR
SLR
Canonical LR(1)
Minimal LR(1)
GLRGeneralized LR parser广义 LR 解析器
RPNReverse Polish notation
ASTAbstract Syntax Tree抽象语法树
CSTConcrete Syntax Tree具体语法树
CSGContext-sensitive grammar上下文相关语法
encn
grammar语法
syntax语法
semantics语义
expression表达式
term

右递归

  • A -> αA | β
  • 不会导致无限递归,更容易处理。
  • 可能会导致更深的递归调用栈,但现代的 Parser 能优化这种情况。

左递归

  • A -> Aα | β
    • A 递归调用自己
  • Left recursion
    • Direct left recursion
    • Indirect left recursion

Packrat

  • 动态规划
  • 在解析过程中缓存(memoization)中间结果
  • 适合处理具有无限前瞻能力的语法。
  • 优点
    • 能够处理左递归和右递归。
    • 解析速度快,适合实时解析。
  • 缺点
    • 需要额外的内存空间。
  • Packrat parsing