Parsing YAML有ANTLR4语法吗?

Parsing YAML有ANTLR4语法吗?,parsing,yaml,antlr4,Parsing,Yaml,Antlr4,由于YAML具有相当复杂的语法,是否可以主要使用ANTLR4为YAML编写解析器? 我正在寻找实现类似YAML的缩进解析和数据类型检测的示例。包含BNF语法。请记住,根据本文档,完全正确的YAML是上下文敏感的,解析器生成器无法解析,因此您的语法必须描述一个上下文无关的超集。缩进处理可以在Python语法()中找到。是的,但我认为YAML的缩进处理类似于Python,但仍然有很大的不同。vs Yaml标识似乎比python中的更复杂。乍一看,它似乎可以通过几个lexer模式(以处理流样式)和le

由于YAML具有相当复杂的语法,是否可以主要使用ANTLR4为YAML编写解析器?
我正在寻找实现类似YAML的缩进解析和数据类型检测的示例。

包含BNF语法。请记住,根据本文档,完全正确的YAML是上下文敏感的,解析器生成器无法解析,因此您的语法必须描述一个上下文无关的超集。

缩进处理可以在Python语法()中找到。是的,但我认为YAML的缩进处理类似于Python,但仍然有很大的不同。vs Yaml标识似乎比python中的更复杂。乍一看,它似乎可以通过几个lexer模式(以处理流样式)和lexer操作来实现,这些lexer操作将空格转换为
缩进
|
Dedent
标记,因此您不必在解析器中处理空格。值得一提的是github repo是一个ANTLR+.net yaml语法。我没有使用它,但一直在讨论如何将其分叉并移植到java,然后更改语法,将一些关于yaml文档的域规则嵌入到解析器中。完成后,我将更新这个问题。据我所知,您可以在手写lexer中处理YAML集合的块语法(缩进规则)。我自己使用这种方法创建了一个基于ANTLR的非常基本的YAML解析器。除了自定义lexer(
yamlexer.cpp
)之外,解析器的所有其他部分都使用ANTLR提供的标准工具(输入处理、解析器语法、侦听器接口)。