按索引查找令牌以进行括号匹配

问题描述 投票:0回答:1

我正在扩展ANTLR example plugin,以添加括号突出显示,因此我已经从intellij sdk实现了PairedBraceMatcher类,但是我找不到从索引中获取PsiElement的方法,这是我已经尝试过的东西:

public class SampleBraceMather implements PairedBraceMatcher {
    private static final BracePair[] PAIRS = {
            new BracePair(TokenIElementType.find((short) 327), TokenIElementType.find((short) 328), true)
    };


    @NotNull
    @Override
    public BracePair[] getPairs() {
        return PAIRS;
    }

    @Override
    public boolean isPairedBracesAllowedBeforeType(@NotNull IElementType lbraceType, @Nullable IElementType contextType) {
        return true;
    }

    @Override
    public int getCodeConstructStart(PsiFile file, int openingBraceOffset) {
        return openingBraceOffset;
    }
}

并且这确实有效,但是我不想对令牌索引进行硬编码(因为它们经常更改),到目前为止,我只剩下SampleLanguageParser.LBRACESampleLanguageParser.RBRACE这两个是ANTLR令牌索引(11和12)。

令牌索引(327和328)仅在atn类别下的(生成的)文件SampleLanguageLexer.interop中定义,但我不知道如何从那里获取这些值。

java antlr syntax-highlighting intellij-plugin brackets
1个回答
0
投票

我发现这是解决方法

© www.soinside.com 2019 - 2024. All rights reserved.