From a5724c2409df2cd490f28d99ab9c08058c1bea83 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Sat, 8 Oct 2016 13:46:04 -0400 Subject: Add quote to jrp and refactor jit --- .bin/jrp.c | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/.bin/jrp.c b/.bin/jrp.c index 1847bbe8..a7f71180 100755 --- a/.bin/jrp.c +++ b/.bin/jrp.c @@ -4,6 +4,7 @@ exec cc -Wall -Wextra $@ $0 -ledit -o $(dirname $0)/jrp #include #include +#include #include #include #include @@ -100,14 +101,14 @@ static void jit_fop(op fop) { *code.ptr++ = fop; } -static void jit_print(void) { +static void jit_push(value imm) { + jit_fop(FOP_PUSH); + jit_fop((op)imm); +} + +static void jit_call(void (*fn)(value)) { jit_fop(FOP_CRT); - switch (radix) { - case 2: jit_fop((op)rt_print_bin); break; - case 8: jit_fop((op)rt_print_oct); break; - case 10: jit_fop((op)rt_print_dec); break; - case 16: jit_fop((op)rt_print_hex); break; - } + jit_fop((op)fn); jit_fop(FOP_CALL); } @@ -117,13 +118,20 @@ static void jit(const char *src) { code.ptr = code.base; jit_fop(FOP_PROL); + bool quote = false; while (*src) { + if (quote) { + jit_push(*src++); + quote = false; + continue; + } switch (*src) { case ' ': break; - case 'b': radix = 2; break; - case 'o': radix = 8; break; - case 'd': radix = 10; break; - case 'x': radix = 16; break; + case 39: quote = true; break; + case 'b': radix = 2; break; + case 'o': radix = 8; break; + case 'd': radix = 10; break; + case 'x': radix = 16; break; case ';': jit_hop(HOP_DROP); break; case ':': jit_hop(HOP_DUP); break; case 92: jit_hop(HOP_SWAP); break; @@ -139,15 +147,19 @@ static void jit(const char *src) { case '^': jit_hop(HOP_XOR); break; case '<': jit_fop(FOP_SHL); break; case '>': jit_fop(FOP_SHR); break; - case ',': jit_fop(FOP_CRT); jit_fop((op)rt_print_ascii); jit_fop(FOP_CALL); break; - case '.': jit_print(); break; + case ',': jit_call(rt_print_ascii); break; + case '.': switch (radix) { + case 2: jit_call(rt_print_bin); break; + case 8: jit_call(rt_print_oct); break; + case 10: jit_call(rt_print_dec); break; + case 16: jit_call(rt_print_hex); break; + } break; default: { char *rest; value val = strtoll(src, &rest, radix); if (rest != src) { src = rest; - jit_fop(FOP_PUSH); - jit_fop((op)val); + jit_push(val); continue; } } -- cgit 1.4.1 r> 2020-11-04Remove modified sensitivity settingsJune McEnroe 2020-10-29Remove editJune McEnroe 2020-10-27Switch gr alias back to git rebaseJune McEnroe I always type out git reset and sometimes still expect gr to be rebase... Never got used to it I guess. 2020-10-27Allow cd host: to cd to same path over sshJune McEnroe 2020-10-27Use SendEnv for cd host:pathJune McEnroe Works properly for weird paths, etc. 2020-10-27Allow cd host:path over sshJune McEnroe Requires AcceptEnv SSH_CD in the remote sshd_config. 2020-10-07Use mandoc -T utf8 for text.June McEnroe Don't depend on LANG being set. 2020-09-20Add The Awakened KingdomJune McEnroe A cute extra novella. Finally finished this series. 2020-09-12Move /opt/local back, cheat port select to use system manJune McEnroe This is not really how you're supposed to use the select system, I don't think, since the mandoc package actually creates those files, but it does work. This lets me actually use the git installed by MacPorts. 2020-09-12Move /opt/local behind /usr againJune McEnroe The reason I did this with pkgsrc was because I actually don't want the man(1) from mandoc, since it won't follow MANSECT. Same applies to MacPorts. I wish I could disable its man(1) with a variant or whatever. 2020-09-12Enable toc in cgit renderings of man pagesJune McEnroe But keep it disabled for READMEs since they always use non-standard sections and the TOC is just distracting there, I think. Also add the style so its h1 is the same size as the ones inside sections... 2020-09-11Install mandoc on macOSJune McEnroe 2020-09-11Rewrite install script yet againJune McEnroe 2020-09-11Remove NetBSD from install scriptJune McEnroe I never use it. 2020-09-11Use MacPorts rather than pkgsrcJune McEnroe My system is probably such a mess now... 2020-09-11Add debian VM name to sshJune McEnroe 2020-09-11Add influencer tweetJune McEnroe 2020-09-10Add The Kingdom of GodsJune McEnroe Reading has really slowed down :( 2020-09-07Add SunglassesJune McEnroe An IRC find. 2020-09-06Add Between the BreathsJune McEnroe One of those good songs from a soundtrack of a film that probably isn't? The summary sounds a lot more interesting than the title implies, at least. 2020-09-04Open /dev/tty in nudgeJune McEnroe This makes it work even when it's run connected to a pipe, i.e. as the notify command of catgirl... 2020-09-04Add nudgeJune McEnroe 2020-09-03Build fbclock with -lzJune McEnroe I guess this got lost somewhere, long ago... 2020-08-29Add tweets from retweetsJune McEnroe