0

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

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

function test(param1, param2) {
}

由于函数是一个关键字,我在解析器中得到的第一个位置是标识符“test”之一。我怎样才能得到从那里到结束花括号的位置?正如人们所期望的那样,参数列表是动态的,因此您事先不知道它的长度。

谢谢!

4

2 回答 2

1

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

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

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

于 2009-05-25T08:36:15.153 回答
0

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

于 2008-11-11T17:29:09.590 回答