diff --git a/LanguageServer/src/main/java/org/nittalab/dtram/languageserver/utils/SemanticAnalyzer.java b/LanguageServer/src/main/java/org/nittalab/dtram/languageserver/utils/SemanticAnalyzer.java index bc9107b..5f1e4ae 100644 --- a/LanguageServer/src/main/java/org/nittalab/dtram/languageserver/utils/SemanticAnalyzer.java +++ b/LanguageServer/src/main/java/org/nittalab/dtram/languageserver/utils/SemanticAnalyzer.java @@ -26,6 +26,7 @@ tokens = analyzeAtomicTokens(tokens); tokens = analyzeStringTokens(tokens); tokens = analyzeTypeTokens(tokens); + tokens = analyzeKeywordTokens(tokens); // TODO: Analyze functions and constants at least. return tokens; } @@ -151,4 +152,31 @@ } return newTokens; } + + /** + * Analyzes keyword tokens. + * + * @param tokens The tokens to be analyzed + * @return The tokens with analyzed type tokens. + * @author Shohei Yamagiwa + * @since 0.1 + */ + protected static List analyzeKeywordTokens(List tokens) { + List newTokens = new ArrayList<>(); + for (Token token : tokens) { + if (token instanceof SemanticToken) { + newTokens.add(token); + continue; + } + switch (token.getText()) { + case Keywords.INIT, Keywords.CHANNEL, Keywords.NATIVE, + Keywords.IN, Keywords.REF, Keywords.OUT, Keywords.SUB_CHANNEL -> { + SemanticToken newToken = new SemanticToken(SemanticTokenTypes.Keyword, token); + newTokens.add(newToken); + } + default -> newTokens.add(token); + } + } + return newTokens; + } }