mirror of
https://github.com/janet-lang/janet
synced 2024-12-01 04:19:55 +00:00
Add a few more ast functions.
This commit is contained in:
parent
e9c4d388c9
commit
a6694e985c
@ -195,9 +195,35 @@ static int cfun_unwrap(DstArgs args) {
|
|||||||
return dst_return(args, dst_ast_unwrap(args.v[0]));
|
return dst_return(args, dst_ast_unwrap(args.v[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cfun_wrap(DstArgs args) {
|
||||||
|
if (args.n != 1) return dst_throw(args, "expected 1 argument");
|
||||||
|
return dst_return(args, dst_ast_wrap(args.v[0], -1, -1));
|
||||||
|
}
|
||||||
|
|
||||||
|
static int cfun_node(DstArgs args) {
|
||||||
|
DstAst *ast;
|
||||||
|
Dst *tup;
|
||||||
|
int32_t start, end;
|
||||||
|
if (args.n != 1) return dst_throw(args, "expected 1 argument");
|
||||||
|
ast = dst_ast_node(args.v[0]);
|
||||||
|
if (ast) {
|
||||||
|
start = ast->source_start;
|
||||||
|
end = ast->source_end;
|
||||||
|
} else {
|
||||||
|
start = -1;
|
||||||
|
end = -1;
|
||||||
|
}
|
||||||
|
tup = dst_tuple_begin(2);
|
||||||
|
tup[0] = dst_wrap_integer(start);
|
||||||
|
tup[1] = dst_wrap_integer(end);
|
||||||
|
return dst_return(args, dst_wrap_tuple(dst_tuple_end(tup)));
|
||||||
|
}
|
||||||
|
|
||||||
static const DstReg cfuns[] = {
|
static const DstReg cfuns[] = {
|
||||||
{"ast-unwrap", cfun_unwrap},
|
{"ast-unwrap", cfun_unwrap},
|
||||||
{"ast-unwrap1", cfun_unwrap1},
|
{"ast-unwrap1", cfun_unwrap1},
|
||||||
|
{"ast-wrap", cfun_wrap},
|
||||||
|
{"ast-node", cfun_node},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user