typedef pic_value pic_list

This commit is contained in:
Yuichi Nishiwaki 2014-03-01 20:54:02 +09:00
parent c357a9302d
commit 3b8868c577
3 changed files with 16 additions and 15 deletions

View File

@ -164,8 +164,8 @@ char *pic_strdup(pic_state *, const char *);
char *pic_strndup(pic_state *, const char *, size_t); char *pic_strndup(pic_state *, const char *, size_t);
pic_value pic_read(pic_state *, const char *); pic_value pic_read(pic_state *, const char *);
pic_value pic_read_file(pic_state *, FILE *); /* returns a list of read data. When input string is incomplete, returns undef. */ pic_list pic_read_file(pic_state *, FILE *); /* When input string is incomplete, returns undef. */
pic_value pic_read_cstr(pic_state *, const char *); pic_list pic_read_cstr(pic_state *, const char *);
pic_value pic_load(pic_state *, const char *); pic_value pic_load(pic_state *, const char *);

View File

@ -122,6 +122,7 @@ struct pic_proc;
struct pic_port; struct pic_port;
/* set aliases to basic types */ /* set aliases to basic types */
typedef pic_value pic_list;
typedef struct pic_pair pic_pair; typedef struct pic_pair pic_pair;
typedef struct pic_string pic_str; typedef struct pic_string pic_str;
typedef struct pic_vector pic_vec; typedef struct pic_vector pic_vec;

View File

@ -176,11 +176,11 @@ read_one(yyscan_t scanner)
return read(tok, scanner); return read(tok, scanner);
} }
pic_value pic_list
read_many(yyscan_t scanner) read_many(yyscan_t scanner)
{ {
int tok; int tok;
pic_value val; pic_value vals;
if (setjmp(yyjmp) != 0) { if (setjmp(yyjmp) != 0) {
if (yymsg) { if (yymsg) {
@ -189,11 +189,11 @@ read_many(yyscan_t scanner)
return pic_undef_value(); /* incomplete string */ return pic_undef_value(); /* incomplete string */
} }
val = pic_nil_value(); vals = pic_nil_value();
while ((tok = gettok(scanner)) != tEOF) { while ((tok = gettok(scanner)) != tEOF) {
val = pic_cons(pic, read(tok, scanner), val); vals = pic_cons(pic, read(tok, scanner), vals);
} }
return pic_reverse(pic, val); return pic_reverse(pic, vals);
} }
#undef pic #undef pic
@ -216,38 +216,38 @@ pic_read(pic_state *pic, const char *cstr)
return val; return val;
} }
pic_value pic_list
pic_read_file(pic_state *pic, FILE *file) pic_read_file(pic_state *pic, FILE *file)
{ {
yyscan_t scanner; yyscan_t scanner;
struct parser_control ctrl; struct parser_control ctrl;
pic_value val; pic_value vals;
ctrl.pic = pic; ctrl.pic = pic;
yylex_init_extra(&ctrl, &scanner); yylex_init_extra(&ctrl, &scanner);
yyset_in(file, scanner); yyset_in(file, scanner);
val = read_many(scanner); vals = read_many(scanner);
yylex_destroy(scanner); yylex_destroy(scanner);
return val; return vals;
} }
pic_value pic_list
pic_read_cstr(pic_state *pic, const char *cstr) pic_read_cstr(pic_state *pic, const char *cstr)
{ {
yyscan_t scanner; yyscan_t scanner;
struct parser_control ctrl; struct parser_control ctrl;
pic_value val; pic_value vals;
ctrl.pic = pic; ctrl.pic = pic;
yylex_init_extra(&ctrl, &scanner); yylex_init_extra(&ctrl, &scanner);
yy_scan_string(cstr, scanner); yy_scan_string(cstr, scanner);
val = read_many(scanner); vals = read_many(scanner);
yylex_destroy(scanner); yylex_destroy(scanner);
return val; return vals;
} }