使用AntLR获取开始和结束位置

时间:2008-11-11 17:26:10

标签: antlr

我目前正在使用AntLR用专有语言解析一些文件。 我需要在编辑器上突出显示它的部分(例如,想想在Java类中突出显示一个方法)。

有没有人提示如何获取它们? 说我有这段代码:

function test(param1, param2) {
}

因为function是一个关键字,我在解析器中获得的第一个位置是标识符“test”之一。如何获得从那里到结束大括号的位置?正如人们所料,参数列表是动态的,因此您事先并不知道它的长度。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,我认为你可以在每个令牌上使用属性'pos'

func: FUNCTION ID '(' ID (',' ID)* ')' {
        System.out.println("Position = " + $FUNCTION.pos);
}

指的是从零开始计算的行内的字符位置。

答案 1 :(得分:0)

不完全理解为什么你得到的第一个职位是考试的位置。如果正确设计了模式规范,您应该能够轻松获得“函数”标记的字符偏移量。您能列出规范的相关部分吗?