From 4e2501c7d74bc9b66ee82052adfe94b167da9577 Mon Sep 17 00:00:00 2001 From: James Westman Date: Mon, 18 Apr 2022 18:05:25 -0500 Subject: [PATCH] Fix number parsing --- blueprintcompiler/tokenizer.py | 3 ++- tests/samples/numbers.blp | 7 +++++++ tests/samples/numbers.ui | 9 +++++++++ tests/test_samples.py | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 tests/samples/numbers.blp create mode 100644 tests/samples/numbers.ui diff --git a/blueprintcompiler/tokenizer.py b/blueprintcompiler/tokenizer.py index 31d75d5..0187bab 100644 --- a/blueprintcompiler/tokenizer.py +++ b/blueprintcompiler/tokenizer.py @@ -40,8 +40,9 @@ _tokens = [ (TokenType.IDENT, r"[A-Za-z_][\d\w\-_]*"), (TokenType.QUOTED, r'"(\\"|[^"\n])*"'), (TokenType.QUOTED, r"'(\\'|[^'\n])*'"), - (TokenType.NUMBER, r"[-+]?[\d_]+(\.[\d_]+)?"), (TokenType.NUMBER, r"0x[A-Fa-f0-9]+"), + (TokenType.NUMBER, r"[-+]?[\d_]*\d(\.[\d_]*\d)?"), + (TokenType.NUMBER, r"[-+]?\.[\d_]*\d"), (TokenType.WHITESPACE, r"\s+"), (TokenType.COMMENT, r"\/\*[\s\S]*?\*\/"), (TokenType.COMMENT, r"\/\/[^\n]*"), diff --git a/tests/samples/numbers.blp b/tests/samples/numbers.blp new file mode 100644 index 0000000..6364dd2 --- /dev/null +++ b/tests/samples/numbers.blp @@ -0,0 +1,7 @@ +using Gtk 4.0; + +Gtk.Label { + xalign: .5; + margin-end: 1_000_000; + margin-top: 0x30; +} diff --git a/tests/samples/numbers.ui b/tests/samples/numbers.ui new file mode 100644 index 0000000..bb70bd8 --- /dev/null +++ b/tests/samples/numbers.ui @@ -0,0 +1,9 @@ + + + + + 0.5 + 1000000 + 48 + + diff --git a/tests/test_samples.py b/tests/test_samples.py index 3f9a921..f077536 100644 --- a/tests/test_samples.py +++ b/tests/test_samples.py @@ -142,6 +142,7 @@ class TestSamples(unittest.TestCase): self.assert_sample("inline_menu") self.assert_sample("layout") self.assert_sample("menu") + self.assert_sample("numbers") self.assert_sample("object_prop") self.assert_sample("parseable") self.assert_sample("property")