simple language: add SimpleTokenSets (IJSDK-1533)

This commit is contained in:
Yann Cébron 2022-09-07 17:42:34 +02:00
parent 301d53d7ae
commit 793c65df3f
4 changed files with 28 additions and 6 deletions

View File

@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiNamedElement;
import com.intellij.psi.tree.TokenSet;
import org.intellij.sdk.language.psi.SimpleProperty;
import org.intellij.sdk.language.psi.SimpleTypes;
import org.intellij.sdk.language.psi.SimpleTokenSets;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -19,8 +19,8 @@ public class SimpleFindUsagesProvider implements FindUsagesProvider {
@Override
public WordsScanner getWordsScanner() {
return new DefaultWordsScanner(new SimpleLexerAdapter(),
TokenSet.create(SimpleTypes.KEY),
TokenSet.create(SimpleTypes.COMMENT),
SimpleTokenSets.IDENTIFIERS,
SimpleTokenSets.COMMENTS,
TokenSet.EMPTY);
}

View File

@ -14,13 +14,12 @@ import com.intellij.psi.tree.IFileElementType;
import com.intellij.psi.tree.TokenSet;
import org.intellij.sdk.language.parser.SimpleParser;
import org.intellij.sdk.language.psi.SimpleFile;
import org.intellij.sdk.language.psi.SimpleTokenSets;
import org.intellij.sdk.language.psi.SimpleTypes;
import org.jetbrains.annotations.NotNull;
public class SimpleParserDefinition implements ParserDefinition {
public static final TokenSet COMMENTS = TokenSet.create(SimpleTypes.COMMENT);
public static final IFileElementType FILE = new IFileElementType(SimpleLanguage.INSTANCE);
@NotNull
@ -32,7 +31,7 @@ public class SimpleParserDefinition implements ParserDefinition {
@NotNull
@Override
public TokenSet getCommentTokens() {
return COMMENTS;
return SimpleTokenSets.COMMENTS;
}
@NotNull

View File

@ -0,0 +1,13 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.intellij.sdk.language.psi;
import com.intellij.psi.tree.TokenSet;
public interface SimpleTokenSets {
TokenSet IDENTIFIERS = TokenSet.create(SimpleTypes.KEY);
TokenSet COMMENTS = TokenSet.create(SimpleTypes.COMMENT);
}

View File

@ -48,9 +48,19 @@ The `SimpleFile` implementation is the top-level node of the [tree of `PsiElemen
```
{src="simple_language_plugin/src/main/java/org/intellij/sdk/language/psi/SimpleFile.java"}
## Define SimpleTokenSets
Define all sets of related token types from `SimpleTypes` in `SimpleTokenSets`.
```java
```
{src="simple_language_plugin/src/main/java/org/intellij/sdk/language/psi/SimpleTokenSets.java"}
## Define a Parser
The Simple Language parser is defined by subclassing [`ParserDefinition`](%gh-ic%/platform/core-api/src/com/intellij/lang/ParserDefinition.java).
To avoid unnecessary classloading when initializing the extension point implementation, all `TokenSet` return values should use constants from dedicated `$Language$TokenSets` class.
```java
```