diff --git a/src/lexer/Lexer.kt b/src/lexer/Lexer.kt new file mode 100644 index 0000000..93a9d5c --- /dev/null +++ b/src/lexer/Lexer.kt @@ -0,0 +1,11 @@ +package lexer + +class Lexer { + fun scan(source: String): List { + if (source.isEmpty()) { + return listOf(Token(TokenType.EOF, LexerPosition(1, 1, 0))) + } + + return emptyList() + } +} diff --git a/src/lexer/LexerPosition.kt b/src/lexer/LexerPosition.kt new file mode 100644 index 0000000..2ca10bc --- /dev/null +++ b/src/lexer/LexerPosition.kt @@ -0,0 +1,5 @@ +package lexer + +class LexerPosition(val line: Int, val column: Int, val length: Int) { + // Do nothing +} diff --git a/src/lexer/Token.kt b/src/lexer/Token.kt new file mode 100644 index 0000000..e7f1727 --- /dev/null +++ b/src/lexer/Token.kt @@ -0,0 +1,8 @@ +package lexer + +class Token( + val type: TokenType, + val position: LexerPosition +) { + // Do nothing +} diff --git a/src/lexer/TokenType.kt b/src/lexer/TokenType.kt new file mode 100644 index 0000000..bace57e --- /dev/null +++ b/src/lexer/TokenType.kt @@ -0,0 +1,5 @@ +package lexer + +enum class TokenType { + EOF +} diff --git a/tests/lexer/LexerScanTest.kt b/tests/lexer/LexerScanTest.kt new file mode 100644 index 0000000..d2ff248 --- /dev/null +++ b/tests/lexer/LexerScanTest.kt @@ -0,0 +1,16 @@ +package be.ugent.logprog.lexer + +import lexer.Lexer +import lexer.TokenType +import org.junit.jupiter.api.Test +import kotlin.test.assertEquals + +class LexerScanTest { + @Test + fun scan_emptyString_returnsEOF() { + val lexer = Lexer() + val tokens = lexer.scan("") + assertEquals(1, tokens.size) + assertEquals(TokenType.EOF, tokens[0].type) + } +}