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);
|
add_word(st, w);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
Str
|
||||||
tick_nat(RpnState *st)
|
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;
|
Str wn;
|
||||||
skip_whitespace(&st->rsp, st->rep);
|
skip_whitespace(&st->rsp, st->rep);
|
||||||
wn = read_word_name(&st->rsp, st->rep);
|
wn = read_word_name(&st->rsp, st->rep);
|
||||||
wn = Str_new(wn.s, wn.len);
|
wn = Str_new(wn.s, wn.len);
|
||||||
Word *w = search_word(st, wn);
|
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) {
|
if (w == nil) {
|
||||||
push_val(st, BOX_INTN(0));
|
push_val(st, BOX_INTN(0));
|
||||||
return;
|
return;
|
||||||
|
@ -442,9 +458,7 @@ to_number_nat(RpnState *st)
|
||||||
void
|
void
|
||||||
parse_word_nat(RpnState *st)
|
parse_word_nat(RpnState *st)
|
||||||
{
|
{
|
||||||
skip_whitespace(&st->rsp, st->rep);
|
push_val(st, BOX_STR(next_word(st)));
|
||||||
Str wn = read_word_name(&st->rsp, st->rep);
|
|
||||||
push_val(st, BOX_STR(wn));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Add table
Reference in a new issue