From 1362a071cfcc53cf2bc442f64ca11fafcda3442a Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Thu, 5 Feb 2026 03:43:51 +0100 Subject: [PATCH] fix(lexer): correct token positions --- src/lexer.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/lexer.py b/src/lexer.py index 8a6c6ec..746679b 100644 --- a/src/lexer.py +++ b/src/lexer.py @@ -13,8 +13,8 @@ class Lexer: self.start: int = 0 self.idx: int = 0 self.length: int = 0 - self.line: int = 0 - self.column: int = 0 + self.line: int = 1 + self.column: int = 1 self.start_pos: Position = self.get_position() def error(self, msg: str): @@ -27,8 +27,8 @@ class Lexer: self.start = 0 self.idx = 0 self.length = len(self.source) - self.line = 0 - self.column = 0 + self.line = 1 + self.column = 1 while not self.is_at_end(): self.start_pos = self.get_position() @@ -59,8 +59,14 @@ class Lexer: char: str = self.peek() self.idx += 1 self.column += 1 + if char == "\n": + self.newline() return char + def newline(self): + self.line += 1 + self.column = 1 + def match(self, expected: str) -> bool: if self.peek() == expected: self.advance() @@ -119,9 +125,6 @@ class Lexer: else: self.add_token(TokenType.SLASH_EQUAL if self.match("=") else TokenType.SLASH) case " " | "\r" | "\t" | "\n": - if char == "\n": - self.line += 1 - self.column = 0 while self.peek().isspace() and not self.is_at_end(): self.advance() self.add_token(TokenType.WHITESPACE) @@ -138,9 +141,6 @@ class Lexer: def scan_string(self): while self.peek() != '"' and not self.is_at_end(): - if self.peek() == "\n": - self.line += 1 - self.column = 0 self.advance() if self.is_at_end():