From baea4aa939861fd4efbc71b96f93ba890f01ac40 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Wed, 30 Jun 2021 17:48:49 +0000 Subject: Add a standard library with the "builtins" that doesn't really need to be actual builtins --- parser.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'parser.c') diff --git a/parser.c b/parser.c index 1e4dc41..e1a7de8 100644 --- a/parser.c +++ b/parser.c @@ -292,9 +292,9 @@ parseoperators(Term *list) syntaxerror("parseoperators"); } - int infixlevel = infos[index].level & (Xfx|Xfy|Yfx); - int prefixlevel = infos[index].level & (Fx|Fy); - int postfixlevel = infos[index].level & (Xf|Yf); + int infixlevel = infos[index].type & (Xfx|Xfy|Yfx); + int prefixlevel = infos[index].type & (Fx|Fy); + int postfixlevel = infos[index].type & (Xf|Yf); if(infixlevel && index != 0 && index != length-1 && infos[index-1].type == 0 && infos[index-1].type == 0){ infos[index-1].type = 0; @@ -328,7 +328,7 @@ parseoperators(Term *list) terms[i] = terms[i+1]; } }else{ - print("Parse error when parsing operators\n"); + print("Parse error when parsing operator %S (prefix=%d, postfix=%d, infix=%d level=%d)\n", prettyprint(terms[index]), prefixlevel, postfixlevel, infixlevel, infos[index].level); syntaxerror("parseoperators"); } } @@ -413,6 +413,7 @@ getoperator(Rune *spelling) } } } + return op; } @@ -442,7 +443,6 @@ nexttoken(void) if(peek == L'%'){ while(peek != L'\n') peek = Bgetrune(parsein); - Bgetrune(parsein); peek = Bgetrune(parsein); } @@ -595,7 +595,7 @@ Integer: } /* Other */ - if(runestrchr(L",.()]}|!", peek)){ + if(runestrchr(L",.()]}|!;", peek)){ switch(peek){ case L',': lookahead.tag = CommaTok; break; case L'(': lookahead.tag = ParenLeftTok; break; @@ -604,6 +604,7 @@ Integer: case L'}': lookahead.tag = CurlyBracketRightTok; break; case L'|': lookahead.tag = PipeTok; break; case L'!': lookahead.tag = AtomTok; lookahead.text = runestrdup(L"!"); break; + case L';': lookahead.tag = AtomTok; lookahead.text = runestrdup(L";"); break; } return; } -- cgit v1.2.3