YAML解析 – lex还是手卷?
我正在尝试编写一个简单的YAML解析器,我从yaml.org读取了规范,
在开始之前,我想知道编写手动解析器是否更好,或者 使用lex(flex / bison).我看了libyaml(C库) – 似乎没有使用lex / yacc. YAML(不包括流程样式),似乎更加面向行,所以,它是 更容易编写手动解析器,或使用flex / bison 谢谢. 解决方法
这个答案基本上是对这个问题的回答:“我应该使用自己的解析器还是使用解析器生成器?”和YAML没什么关系.但是它会“回答”你的问题.
你需要问的问题不是“这是否适用于这种特定的语言/语法”,而是“我是否有信心实现这一点”.问题的真相是,您要解析的大多数格式只能与生成的解析器一起使用.另一个事实是,用简单的手写recursive descent parser来解析复杂的语言是可行的. 我已经写过其中一个,一个用于EDDL的递归下降解析器(C和结构化元素)和一个用于INI的bison / flex解析器.我选择了这些例子,因为它们反对直觉和外部要求决定了决定. 既然我在技术层面建立了它是可能的,为什么你会选择一个而不是另一个?这是一个很难回答的问题,这里有一些关于这个主题的想法: >写一个好的词法分析器真的很难.在大多数情况下,使用flex来生成词法分析器是有意义的.除非你有非常奇特的输入格式,否则很少使用手动滚动自己的词法分析器. 这不是一个或另一个的明确答案,但它指出了正确的方向.既然看起来你正在编写解析器以获得乐趣,我认为你应该编写两种类型的解析器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |