1
0
mirror of https://github.com/janet-lang/janet synced 2025-11-15 14:57:22 +00:00

Add method syntax to parser.

This commit is contained in:
Calvin Rose
2019-02-05 19:43:41 -05:00
parent 1394dbbd57
commit 74e1a3273f
5 changed files with 43 additions and 2 deletions

View File

@@ -609,11 +609,13 @@ static int parsergc(void *p, size_t size) {
return 0;
}
static Janet parserget(void *p, Janet key);
static JanetAbstractType janet_parse_parsertype = {
"core/parser",
parsergc,
parsermark,
NULL,
parserget,
NULL
};
@@ -772,6 +774,26 @@ static Janet cfun_parse_state(int32_t argc, Janet *argv) {
return janet_wrap_string(str);
}
static const JanetMethod parser_methods[] = {
{"byte", cfun_parse_byte},
{"consume", cfun_parse_consume},
{"error", cfun_parse_error},
{"flush", cfun_parse_flush},
{"has-more", cfun_parse_has_more},
{"insert", cfun_parse_insert},
{"produce", cfun_parse_produce},
{"state", cfun_parse_state},
{"status", cfun_parse_status},
{"where", cfun_parse_where},
{NULL, NULL}
};
static Janet parserget(void *p, Janet key) {
(void) p;
if (!janet_checktype(key, JANET_KEYWORD)) janet_panicf("expected keyword method");
return janet_getmethod(janet_unwrap_keyword(key), parser_methods);
}
static const JanetReg parse_cfuns[] = {
{
"parser/new", cfun_parse_parser,