From 4e21a4d46a90c56edd45f5d5c46b375742738a17 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 27 May 2020 12:43:49 +0100 Subject: [PATCH] Optimize `rune_is_*` procedures for tokenizer --- src/tokenizer.cpp | 6 ++++-- src/unicode.cpp | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index 4e0755742..8361e62a7 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -937,8 +937,10 @@ Token tokenizer_get_token(Tokenizer *t) { } Token token = {}; - token.string = {t->curr, 1}; - token.pos.file = t->fullpath; + token.string.text = t->curr; + token.string.len = 1; + token.pos.file.text = t->fullpath.text; + token.pos.file.len = t->fullpath.len; token.pos.line = t->line_count; token.pos.offset = t->curr - t->start; token.pos.column = t->curr - t->line + 1; diff --git a/src/unicode.cpp b/src/unicode.cpp index 679d56365..b988155f7 100644 --- a/src/unicode.cpp +++ b/src/unicode.cpp @@ -12,7 +12,7 @@ bool rune_is_letter(Rune r) { if (r == '_') { return true; } - return gb_char_is_alpha(cast(char)r) != 0; + return ((cast(u32)r | 0x20) - 0x61) < 26; } switch (utf8proc_category(r)) { case UTF8PROC_CATEGORY_LU: @@ -27,7 +27,7 @@ bool rune_is_letter(Rune r) { bool rune_is_digit(Rune r) { if (r < 0x80) { - return gb_is_between(r, '0', '9'); + return (cast(u32)r - '0') < 10; } return utf8proc_category(r) == UTF8PROC_CATEGORY_ND; }