From 07082593ab4abfbf9a3dd6729cb2e548ec303115 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Fri, 14 Jan 2022 00:31:03 +0000 Subject: =?UTF-8?q?Implement=20code=20for=20running=20operators=20(both=20?= =?UTF-8?q?monadic=20and=20dyadic).=20Also=20implement=20=E2=8D=A8=20and?= =?UTF-8?q?=20=E2=8D=A5=20since=20they=20are=20very=20simple?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lexer.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'lexer.c') diff --git a/lexer.c b/lexer.c index ceccf2f..bf2aaa4 100644 --- a/lexer.c +++ b/lexer.c @@ -4,8 +4,6 @@ #include "apl9.h" -Rune primmonopnames[] = L"¨⍨⌸⌶&"; -Rune primdyadopnames[] = L"⍣.∘⍤⍥@⍠⌺"; Rune primhybridnames[] = L"/\⌿⍀"; Statement * @@ -77,11 +75,15 @@ lexline(Rune *line) offset++; }else if(p = runestrchr(primmonopnames, line[offset])){ stmt->toks[stmt->ntoks].tag = MonadicOpTag; - stmt->toks[stmt->ntoks].func.code = p-primmonopnames; + stmt->toks[stmt->ntoks].operator.type = OperatortypePrim; + stmt->toks[stmt->ntoks].operator.dyadic = 0; + stmt->toks[stmt->ntoks].operator.code = p-primmonopnames; offset++; }else if(p = runestrchr(primdyadopnames, line[offset])){ stmt->toks[stmt->ntoks].tag = DyadicOpTag; - stmt->toks[stmt->ntoks].func.code = p-primdyadopnames; + stmt->toks[stmt->ntoks].operator.type = OperatortypePrim; + stmt->toks[stmt->ntoks].operator.dyadic = 1; + stmt->toks[stmt->ntoks].operator.code = p-primdyadopnames; offset++; }else if(isdigitrune(line[offset])){ char buf[64]; -- cgit v1.2.3