我正在尝试研究可能的解析器,作为开发可用于解析 Lin Descriptor File 的 PC 应用程序的一部分。当前的解析器应用程序基于 flex-bison 解析方法。现在我需要重新设计解析器,因为当前的解析器无法检测到特定的错误。
我以前使用过 Ragel 解析器(https://en.wikipedia.org/wiki/Ragel)来解析正则表达式(Regex:https ://en.wikipedia.org/wiki/Regular_expression )命令,事实证明它非常方便。
但是,由于当前的复杂性LDF-file
,我不确定 Ragel(以 C++ 作为宿主语言)是否是解析LDF-file
. 这样做的原因是LDF-file
有很多数据不是固定的或恒定的,而是根据供应商而变化。此外,这些LDF
字段必须保留对其他字段的引用以检测文件中的错误。当解析结构固定时,Ragel 更适合(这就是我在开发 Regex 解析器时发现的)
已经从事过此类项目的任何人都可以提供一些技巧来为 Lin Descriptor File 选择合适的解析器。
Lin 描述符文件示例:http ://microchipdeveloper.com/lin:protocol-app-ldf