feat(lexer): Scan empty string
This commit is contained in:
		
							parent
							
								
									4054ed5fce
								
							
						
					
					
						commit
						f72501fde2
					
				
					 5 changed files with 45 additions and 0 deletions
				
			
		
							
								
								
									
										11
									
								
								src/lexer/Lexer.kt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/lexer/Lexer.kt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | |||
| package lexer | ||||
| 
 | ||||
| class Lexer { | ||||
|     fun scan(source: String): List<Token> { | ||||
|         if (source.isEmpty()) { | ||||
|             return listOf(Token(TokenType.EOF, LexerPosition(1, 1, 0))) | ||||
|         } | ||||
| 
 | ||||
|         return emptyList() | ||||
|     } | ||||
| } | ||||
							
								
								
									
										5
									
								
								src/lexer/LexerPosition.kt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/lexer/LexerPosition.kt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| package lexer | ||||
| 
 | ||||
| class LexerPosition(val line: Int, val column: Int, val length: Int) { | ||||
|     // Do nothing | ||||
| } | ||||
							
								
								
									
										8
									
								
								src/lexer/Token.kt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/lexer/Token.kt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| package lexer | ||||
| 
 | ||||
| class Token( | ||||
|     val type: TokenType, | ||||
|     val position: LexerPosition | ||||
| ) { | ||||
|     // Do nothing | ||||
| } | ||||
							
								
								
									
										5
									
								
								src/lexer/TokenType.kt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/lexer/TokenType.kt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| package lexer | ||||
| 
 | ||||
| enum class TokenType { | ||||
|     EOF | ||||
| } | ||||
							
								
								
									
										16
									
								
								tests/lexer/LexerScanTest.kt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								tests/lexer/LexerScanTest.kt
									
										
									
									
									
										Normal file
									
								
							|  | @ -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) | ||||
|     } | ||||
| } | ||||
		Reference in a new issue