我有ASCII垃圾的二进制文件,其中包含一些XML代码的snipplet。
我正在寻找一种(最好是快速的)算法,可以在这个二进制文件中找到这些XML snipplet。
(就像正则表达式一样,但是使用与上下文无关的语法进行模式匹配。)
我想以某种方式将算法推广到其他无上下文语法。
有什么想法吗?
答案 0 :(得分:0)
通常情况下,解析器将解析一个应该属于该语言的句子,而不是一个任意句子,其中属于该语言的一个句子隐藏在其中。
我建议您使用语法和正则表达式的开始符号在ASCII垃圾中检查它,一旦找到它,在该符号的文本上使用您的解析器与句子的其余部分并查看解析器停止解析时出错。然后你必须弄清楚JS代码是否良好,具体取决于错误发生的位置。
我不知道任何算法可以开箱即用,但我想有人可能以前需要这个,因为它实际上很有用。也许你可以在Grune和Jacobs的书Parsing Techniques中找到一些有趣的东西。