代码之家  ›  专栏  ›  技术社区  ›  smwikipedia

如何理解为ANTLR语法生成的ATN图?

  •  5
  • smwikipedia  · 技术社区  · 8 年前

    我的ANTLR4语法中有两个简单的词法规则:

    fragment Attrs : '.' ARCH; 
    fragment ARCH : 'IA32' | 'X64' | 'IPF' | 'EBC' | 'common';
    

    enter image description here

    我搜索了一些关于“ATN”的参考文献,例如 one .

    • 节点中的数字和标签是什么意思?
    • 什么是 ε 箭头线上的符号是什么意思?
    1 回复  |  直到 4 年前
        1
  •  9
  •   Mike Lischke    7 年前

    您在图中看到的是ATN状态的圆圈,其唯一ID(没有两个状态共享相同的状态号)以及指示状态类型的标签(规则开始/结束状态、基本状态等)。通过将鼠标悬停在某个状态上,直到获得工具提示,您可以获得更多信息。圆角矩形描述了此规则调用的规则。

    大多数状态是通过转换连接的,转换描述了解析器在执行该状态机时必须走的方向。转换可以在不消耗输入的情况下执行(然后称为epsilon转换,由那个小epsilon符号标记),或者需要某些输入来匹配(表示为 label 在ATN中,也连接到图形图像中的过渡箭头)。