Skip to content

Commit

Permalink
Added contexts to languages
Browse files Browse the repository at this point in the history
  • Loading branch information
TwoOfTwelve committed Jan 13, 2025
1 parent ca10c5f commit 426d126
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 1 deletion.
5 changes: 5 additions & 0 deletions language-api/src/main/java/de/jplag/Language.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package de.jplag;

import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Set;

Expand Down Expand Up @@ -52,6 +53,10 @@ default List<Token> parse(Set<File> files) throws ParsingException {
*/
List<Token> parse(Set<File> files, boolean normalize) throws ParsingException;

default List<Class<?>> getTokenContexts() {
return Collections.emptyList();
}

/**
* Indicates whether the tokens returned by parse have semantic information added to them, i.e. whether the token
* attribute semantics is null or not.
Expand Down
13 changes: 13 additions & 0 deletions languages/cpp/src/main/java/de/jplag/cpp/CPPLanguage.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
package de.jplag.cpp;

import java.util.List;

import org.kohsuke.MetaInfServices;

import de.jplag.Language;
import de.jplag.antlr.AbstractAntlrLanguage;
import de.jplag.tokentypes.ArraySyntaxTokenTypes;
import de.jplag.tokentypes.ExceptionHandlingTokenTypes;
import de.jplag.tokentypes.ImperativeTokenAttribute;
import de.jplag.tokentypes.InlineIfTokenTypes;
import de.jplag.tokentypes.ObjectOrientationTokens;

/**
* The entry point for the ANTLR parser based C++ language module.
Expand Down Expand Up @@ -46,4 +53,10 @@ public boolean tokensHaveSemantics() {
public boolean supportsNormalization() {
return true;
}

@Override
public List<Class<?>> getTokenContexts() {
return List.of(ArraySyntaxTokenTypes.class, ExceptionHandlingTokenTypes.class, ImperativeTokenAttribute.class, InlineIfTokenTypes.class,
ObjectOrientationTokens.class);
}
}
17 changes: 17 additions & 0 deletions languages/java/src/main/java/de/jplag/java/JavaLanguage.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@

import de.jplag.ParsingException;
import de.jplag.Token;
import de.jplag.tokentypes.AnnotationTokenTypes;
import de.jplag.tokentypes.ArraySyntaxTokenTypes;
import de.jplag.tokentypes.AssertTokenTypes;
import de.jplag.tokentypes.CodeStructureTokenTypes;
import de.jplag.tokentypes.ExceptionHandlingTokenTypes;
import de.jplag.tokentypes.ImperativeTokenAttribute;
import de.jplag.tokentypes.InlineIfTokenTypes;
import de.jplag.tokentypes.ObjectOrientationTokens;
import de.jplag.tokentypes.ObjectOrientationWithInterfacesTokenAttributes;
import de.jplag.tokentypes.SynchronizedTokenTypes;

/**
* Language for Java 9 and newer.
Expand Down Expand Up @@ -62,4 +72,11 @@ public boolean supportsNormalization() {
public String toString() {
return this.getIdentifier();
}

@Override
public List<Class<?>> getTokenContexts() {
return List.of(AnnotationTokenTypes.class, ArraySyntaxTokenTypes.class, AssertTokenTypes.class, CodeStructureTokenTypes.class,
ExceptionHandlingTokenTypes.class, ImperativeTokenAttribute.class, InlineIfTokenTypes.class, ObjectOrientationTokens.class,
SynchronizedTokenTypes.class, ObjectOrientationWithInterfacesTokenAttributes.class);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
package de.jplag.kotlin;

import java.util.List;

import org.kohsuke.MetaInfServices;

import de.jplag.antlr.AbstractAntlrLanguage;
import de.jplag.tokentypes.CodeStructureTokenTypes;
import de.jplag.tokentypes.ExceptionHandlingTokenTypes;
import de.jplag.tokentypes.ImperativeTokenType;
import de.jplag.tokentypes.ObjectOrientationTokens;

/**
* This represents the Kotlin language as a language supported by JPlag.
Expand Down Expand Up @@ -39,5 +45,8 @@ public int minimumTokenMatch() {
return DEFAULT_MIN_TOKEN_MATCH;
}

// TODO contexts
@Override
public List<Class<?>> getTokenContexts() {
return List.of(CodeStructureTokenTypes.class, ExceptionHandlingTokenTypes.class, ImperativeTokenType.class, ObjectOrientationTokens.class);
}
}

0 comments on commit 426d126

Please sign in to comment.