如何仅对较大文件中的特定区域进行标记?

时间:2017-01-29 02:59:29

标签: antlr4 tokenize

我有一个模板语言的语法,模板作为元素文本存储在XML文档中。

我在XML上使用SAX解析器,在那里处理它的非模板部分(还有很多其他的内容要处理),当我遇到包含模板源的XML元素时,我得到它的文本内容作为一个字符串并用它构造一个ANTLRInputStream。这样可以正常工作,但它并不理想,因为任何错误最终都会引用':1,2',而不是XML文件深处的正确文件名,行和偏移量。

处理此问题的更好方法是什么?理想情况下,我可以从字符串构造类似ANTLRInputStream的东西,但是给它一个文件名和起始行/列(而不是1,2)?或者,使用XML文档的ANTLRFileStream,但只标记它的特定区域,以某种方式提供长度和偏移量?

有没有办法使用ANTLRFileStream或生成的lexer类?或者我是否需要子类化以获得此行为?

0 个答案:

没有答案