scanner: cut keyword lookups in half
parent
a19aaf2b90
commit
34af7ccba9
|
@ -580,8 +580,8 @@ pub fn (mut s Scanner) scan() token.Token {
|
||||||
// tmp hack to detect . in ${}
|
// tmp hack to detect . in ${}
|
||||||
// Check if not .eof to prevent panic
|
// Check if not .eof to prevent panic
|
||||||
next_char := if s.pos + 1 < s.text.len { s.text[s.pos + 1] } else { `\0` }
|
next_char := if s.pos + 1 < s.text.len { s.text[s.pos + 1] } else { `\0` }
|
||||||
if token.is_key(name) {
|
kind := token.keywords[name]
|
||||||
kind := token.key_to_token(name)
|
if kind != .unknown {
|
||||||
if kind == .key_fn {
|
if kind == .key_fn {
|
||||||
s.struct_name = s.ident_struct_name()
|
s.struct_name = s.ident_struct_name()
|
||||||
s.fn_name = s.ident_fn_name()
|
s.fn_name = s.ident_fn_name()
|
||||||
|
|
|
@ -14,6 +14,7 @@ pub:
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum Kind {
|
pub enum Kind {
|
||||||
|
unknown
|
||||||
eof
|
eof
|
||||||
name // user
|
name // user
|
||||||
number // 123
|
number // 123
|
||||||
|
@ -133,8 +134,8 @@ const (
|
||||||
)
|
)
|
||||||
// build_keys genereates a map with keywords' string values:
|
// build_keys genereates a map with keywords' string values:
|
||||||
// Keywords['return'] == .key_return
|
// Keywords['return'] == .key_return
|
||||||
fn build_keys() map[string]int {
|
fn build_keys() map[string]Kind {
|
||||||
mut res := map[string]int
|
mut res := map[string]Kind
|
||||||
for t in int(Kind.keyword_beg) + 1 .. int(Kind.keyword_end) {
|
for t in int(Kind.keyword_beg) + 1 .. int(Kind.keyword_end) {
|
||||||
key := token_str[t]
|
key := token_str[t]
|
||||||
res[key] = t
|
res[key] = t
|
||||||
|
@ -145,6 +146,7 @@ fn build_keys() map[string]int {
|
||||||
// TODO remove once we have `enum Kind { name('name') if('if') ... }`
|
// TODO remove once we have `enum Kind { name('name') if('if') ... }`
|
||||||
fn build_token_str() []string {
|
fn build_token_str() []string {
|
||||||
mut s := [''].repeat(nr_tokens)
|
mut s := [''].repeat(nr_tokens)
|
||||||
|
s[Kind.unknown] = 'unknown'
|
||||||
s[Kind.eof] = 'eof'
|
s[Kind.eof] = 'eof'
|
||||||
s[Kind.name] = 'name'
|
s[Kind.name] = 'name'
|
||||||
s[Kind.number] = 'number'
|
s[Kind.number] = 'number'
|
||||||
|
|
Loading…
Reference in New Issue