add find-word
native word
we can implement the tick word with this later...
This commit is contained in:
parent
bf608ad103
commit
d3b3e7230f
1 changed files with 17 additions and 0 deletions
17
pila.c
17
pila.c
|
@ -441,6 +441,22 @@ parse_word_nat(RpnState *st)
|
||||||
push_val(st, BOX_STR(wn));
|
push_val(st, BOX_STR(wn));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
find_word_nat(RpnState *st)
|
||||||
|
{
|
||||||
|
Value wnw = pop_val(st);
|
||||||
|
if (wnw.kind == VAL_NIL || wnw.kind != VAL_STR) {
|
||||||
|
signal_error(st, "expected string");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Word *w = search_word(st, wnw.str);
|
||||||
|
if (w == nil) {
|
||||||
|
push_val(st, Nil);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
push_val(st, BOX_INTN((u64)w));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_word(RpnState *st, Word *w)
|
add_word(RpnState *st, Word *w)
|
||||||
{
|
{
|
||||||
|
@ -635,6 +651,7 @@ main(int argc, char **argv)
|
||||||
{.name = Sl("'"), .kind = WORD_NATIVE, .nat = tick_nat },
|
{.name = Sl("'"), .kind = WORD_NATIVE, .nat = tick_nat },
|
||||||
{.name = Sl(">#"), .kind = WORD_NATIVE, .nat = to_number_nat },
|
{.name = Sl(">#"), .kind = WORD_NATIVE, .nat = to_number_nat },
|
||||||
{.name = Sl("parse-word"), .kind = WORD_NATIVE, .nat = parse_word_nat },
|
{.name = Sl("parse-word"), .kind = WORD_NATIVE, .nat = parse_word_nat },
|
||||||
|
{.name = Sl("find-word"), .kind = WORD_NATIVE, .nat = find_word_nat },
|
||||||
{.name = Sl("exec"), .kind = WORD_NATIVE, .nat = exec_nat},
|
{.name = Sl("exec"), .kind = WORD_NATIVE, .nat = exec_nat},
|
||||||
{.name = Sl("eval"), .kind = WORD_NATIVE, .nat = eval_nat},
|
{.name = Sl("eval"), .kind = WORD_NATIVE, .nat = eval_nat},
|
||||||
{.name = Sl("dup"), .kind = WORD_NATIVE, .nat = dup_nat },
|
{.name = Sl("dup"), .kind = WORD_NATIVE, .nat = dup_nat },
|
||||||
|
|
Loading…
Add table
Reference in a new issue