我编写了一个简单的gdb / mi解析器,它可以将gdb / mi值解析为树。但是现在我想构建一个流解析器,这样我就可以将部分gdb / mi输出丢给解析器,或类似sax-parser。
我只知道如何实现递归解析器来解析值,而不是整个mi输出。此外,我不知道如何使解析器暂停并按需继续。
有人能给我一些想法吗?
答案 0 :(得分:0)
一些一般性说明。
首先,手册中的MI语法在某些地方是错误的。由于向后兼容性,没有人修复代码。由于我不知道...懒惰或缺乏快乐,也没有人修复手册。详细信息要么是在bugzilla中的封闭(叹气)错误中,要么是在邮件列表档案中。
其次,方法是将gdb的每一行输出视为要解析的文本。
第三,已经有其他几种现有的MI解析器。您可能更愿意从现有的开始。
第四,或者您可能只想在gdb中用Python编写代码并避免整个解析混乱。目前还不完全清楚Python涵盖了MI所暴露的所有功能,但它可能非常接近。