From ceba20f77db23e8a8d0e913b54ec95930eb993e9 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 20 May 2026 22:47:25 +0100 Subject: Add "native" keyword --- .../java/org/zwobble/hobgoblin/compiler/parser/TokenType.java | 1 + .../java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java | 2 ++ .../org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java | 11 +++++++++++ 3 files changed, 14 insertions(+) (limited to 'src') diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java index ef1c9dc..e25a9f0 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java @@ -7,6 +7,7 @@ enum TokenType { WHITESPACE, KEYWORD_FIELD, + KEYWORD_NATIVE, KEYWORD_STRUCT, KEYWORD_SUM, KEYWORD_VARIANT, diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java index 1311df3..7119cfd 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java @@ -109,6 +109,8 @@ class Tokenizer { TokenType tokenType; if (CharSequence.compare(sourceRange.charSequence(), "field") == 0) { tokenType = TokenType.KEYWORD_FIELD; + } else if (CharSequence.compare(sourceRange.charSequence(), "native") == 0) { + tokenType = TokenType.KEYWORD_NATIVE; } else if (CharSequence.compare(sourceRange.charSequence(), "struct") == 0) { tokenType = TokenType.KEYWORD_STRUCT; } else if (CharSequence.compare(sourceRange.charSequence(), "sum") == 0) { diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java index 551e8d3..e8dfd36 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java @@ -29,6 +29,17 @@ public class TokenizerTests { )); } + @Test + public void keywordNativeIsTokenized() { + var sourceText = SourceText.fromString("", "native"); + + var tokens = Tokenizer.tokenize(sourceText); + + assertThat(tokens.tokens(), isSequence( + equalTo(new Token(TokenType.KEYWORD_NATIVE, sourceRange(sourceText, 0, 6))) + )); + } + @Test public void keywordStructIsTokenized() { var sourceText = SourceText.fromString("", "struct"); -- cgit v1.2.3