我目前正在使用AntLR用专有语言解析一些文件。 我需要在编辑器上突出显示它的部分(例如,想想在Java类中突出显示一个方法)。
有没有人提示如何获取它们? 说我有这段代码:
function test(param1, param2) {
}
因为function是一个关键字,我在解析器中获得的第一个位置是标识符“test”之一。如何获得从那里到结束大括号的位置?正如人们所料,参数列表是动态的,因此您事先并不知道它的长度。
谢谢!
答案 0 :(得分:1)
如果我理解你的问题,我认为你可以在每个令牌上使用属性'pos'
func: FUNCTION ID '(' ID (',' ID)* ')' {
System.out.println("Position = " + $FUNCTION.pos);
}
指的是从零开始计算的行内的字符位置。
答案 1 :(得分:0)
不完全理解为什么你得到的第一个职位是考试的位置。如果正确设计了模式规范,您应该能够轻松获得“函数”标记的字符偏移量。您能列出规范的相关部分吗?