代码之家  ›  专栏  ›  技术社区  ›  Leandro Caniglia Charlie

如何理解这个ebnf-pascal定义

  •  4
  • Leandro Caniglia Charlie  · 技术社区  · 6 年前

    我正在实现一个Pascal解析器 EBNF defintion . 以下规范中有一些我不理解的地方:

    variable
       entire-variable | component-variable | referenced-variable 
    
    entire-variable
       variable-identifier | field-identifier
    
    component-variable
       indexed-variable | field-designator | file-buffer
    
    field-designator
       record-variable "." field-identifier 
    

    假设我们要应用 variable 在生产上 a.b[0] . 自从 a 符合 entire-variable 生产,这将阻止 component-variable 从检测到 field-designator a.b 因此, . 下列的 将停止分析器。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Ken White    6 年前

    由于ebnf没有有序的选择,所以最长的匹配通常用于确定哪些规则适用。