我需要解析第三方应用程序生成的文件。使用ANTLR,我构建了一个似乎工作正常的解析器,直到我遇到以下障碍。
文件类型是基于行的,并使用多个关键字来定义层次结构;所谓的“块”,它们本身可以有子块,等等。根据当前块的类型,各种线具有特殊含义,例如,在一个特定的块中,第5行(相对于块的开始)保存文件的作者,在另一个块中,第3行是文件名等。所有这些本质上都是字符串,即用户可以输入他们想要的任何内容创建文件时的数据;但它们是字符串的事实只能通过行号隐含地知道。
因为没有引号或任何标识这些字符串的东西,我的词法分析器偶尔会将这些文本的一部分(如数字或与关键字相同的单词)标记,结果是我无法可靠地重建原始字符串解析器规则中来自标记的字符串。
是否可以使用像我正在尝试的解析器生成器来处理这种文件?由于我不是非常精通解析器构建,我希望ANTLR有一个简单的解决方法或功能,可以帮助克服这个小问题。