move next word reading to its own function
This commit is contained in:
parent
d188cb033d
commit
a033c22ff3
1 changed files with 19 additions and 5 deletions
24
pila.c
24
pila.c
|
@ -387,14 +387,30 @@ compile_end_nat(RpnState *st)
|
|||
add_word(st, w);
|
||||
}
|
||||
|
||||
void
|
||||
tick_nat(RpnState *st)
|
||||
Str
|
||||
next_word(RpnState *st)
|
||||
{
|
||||
skip_whitespace(&st->rsp, st->rep);
|
||||
return read_word_name(&st->rsp, st->rep);
|
||||
}
|
||||
|
||||
Word *
|
||||
next_word_read_get(RpnState *st)
|
||||
{
|
||||
Str wn;
|
||||
skip_whitespace(&st->rsp, st->rep);
|
||||
wn = read_word_name(&st->rsp, st->rep);
|
||||
wn = Str_new(wn.s, wn.len);
|
||||
Word *w = search_word(st, wn);
|
||||
if (w == nil)
|
||||
return nil;
|
||||
return w;
|
||||
}
|
||||
|
||||
void
|
||||
tick_nat(RpnState *st)
|
||||
{
|
||||
Word *w = next_word_read_get(st);
|
||||
if (w == nil) {
|
||||
push_val(st, BOX_INTN(0));
|
||||
return;
|
||||
|
@ -442,9 +458,7 @@ to_number_nat(RpnState *st)
|
|||
void
|
||||
parse_word_nat(RpnState *st)
|
||||
{
|
||||
skip_whitespace(&st->rsp, st->rep);
|
||||
Str wn = read_word_name(&st->rsp, st->rep);
|
||||
push_val(st, BOX_STR(wn));
|
||||
push_val(st, BOX_STR(next_word(st)));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Reference in a new issue