summaryrefslogtreecommitdiff
path: root/quadnames.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-24 00:00:05 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-24 00:00:05 +0000
commit464110afe0599efa5b876eb398769cdbf2a0c1df (patch)
treec572fdeb3773c20d12a9f104292b15f20d885143 /quadnames.c
parent9a938d3ce26b2d3728d791c0f858acdbd50223b5 (diff)
Rework the lexer to lex from either a string or bio. This allows multiline dfn's.
Diffstat (limited to 'quadnames.c')
-rw-r--r--quadnames.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/quadnames.c b/quadnames.c
index fa1b247..be543ff 100644
--- a/quadnames.c
+++ b/quadnames.c
@@ -58,8 +58,8 @@ quadnamedatum(QuadnameDef q)
Datum *
getquad(void)
{
- Rune *input = prompt(L"⎕:\n\t");
- Datum *result = evalline(input, 1);
+ print("⎕:\n\t");
+ Datum *result = evalline(nil, nil, 1);
/* TODO check that the expression doesn't fail */
return result;
}
@@ -141,11 +141,14 @@ runfile(Array *a)
if(bio == nil)
return mkscalarint(0);
- char *charcode = Brdstr(bio, Beof, 1);
- Rune *code = runesmprint("%s", charcode);
- evalline(code, 1);
- free(charcode);
- free(code);
+ while(1){
+ Rune r = Bgetrune(bio);
+ Bungetrune(bio);
+ if(r == Beof)
+ break;
+ else
+ evalline(nil, bio, 1);
+ }
Bterm(bio);
return mkscalarint(1);
}