From: ahmedsamyh Date: Sat, 16 Nov 2024 18:24:42 +0000 (+0500) Subject: # TODO: Handle floating point numbers X-Git-Url: https://www.git.momoyon.org/?a=commitdiff_plain;h=49ebc03568941f379d399f60d0c53cde05cc9f7c;p=lang.git # TODO: Handle floating point numbers --- diff --git a/main.momo b/main.momo index 356da73..f1e547b 100644 --- a/main.momo +++ b/main.momo @@ -1,6 +1,3 @@ -() {} [] -> -- + / * % -= ! ->= > < <= != == -, : ; . - +69.0 +100.15134324 +420.11 diff --git a/main.py b/main.py index 1b00a67..4178323 100644 --- a/main.py +++ b/main.py @@ -177,12 +177,19 @@ class Parser: assert self.current_char().isdigit(), "Called consume_number() at the wrong character!" number: str = self.consume_char() - # TODO: Handle floating point numbers # TODO: Handle numbers in other formats (Eg, binary, hexadecimal, etc) number_loc: Loc = Loc(self.filename, self.line, self.row()) - - while self.current_char().isdigit() and not self.eof(): - number += self.consume_char() + dot_handled: bool = False + + while (self.current_char().isdigit() or self.current_char() == '.') and not self.eof(): + if self.current_char() == '.': + if dot_handled: + self.fatal("Number can only have one dots!") + number += self.consume_char() + dot_handled = True + else: + assert self.current_char().isdigit(), "This should never happen" + number += self.consume_char() return (number, number_loc) diff --git a/tests/08-floating-point-numbers.momo b/tests/08-floating-point-numbers.momo new file mode 100644 index 0000000..f1e547b --- /dev/null +++ b/tests/08-floating-point-numbers.momo @@ -0,0 +1,3 @@ +69.0 +100.15134324 +420.11 diff --git a/tests/08-floating-point-numbers.momo.test b/tests/08-floating-point-numbers.momo.test new file mode 100644 index 0000000..a254459 --- /dev/null +++ b/tests/08-floating-point-numbers.momo.test @@ -0,0 +1,4 @@ +"Token (Number, '69.0', ./tests/08-floating-point-numbers.momo:1:1)" +"Token (Number, '100.15134324', ./tests/08-floating-point-numbers.momo:2:1)" +"Token (Number, '420.11', ./tests/08-floating-point-numbers.momo:3:1)" +'None'