?~ register now takes in an argument

This commit is contained in:
Devine Lu Linvega 2024-04-14 17:33:42 -07:00
parent dacb9836a0
commit b5b6472ebc
4 changed files with 41 additions and 46 deletions

View File

@ -1,9 +1,9 @@
<> ((You said: quit\n) send) ((You quit.) print ')
<> (?: print ') (?:)
<> (?: send) (?: wait)
<> (wait) ((You said: ?~\n) send)
<> (?: send) (?: wait stdin)
<> (wait ?~) ((You said: ?~\n) send)
<> (' ?x) (?x ')
(Say something, or type "quit": \n) print '
wait
wait stdin

View File

@ -1,5 +1,4 @@
<> (NAME) (Modal)
<> (?: print $) (?:)
<> ($ ?x) (?x $)
$ (Welcome to NAME \nHave fun!\n\n) print
<> (listen ?~) (?~ done.)
foo listen stdin bar

View File

@ -1,7 +1,7 @@
-- (Tic Tac Toe)
<> (-- ?x) ()
<> (READ) (?~)
<> (READ ?~) (?~)
-- (Print)
@ -34,8 +34,8 @@
-- (Play)
<> (ready) (display READ play)
<> (?x run wait) (READ play)
<> (ready) (display READ stdin play)
<> (?x run wait) (READ stdin play)
<> (?x victory) ((?x wins!\n) put-str)
-- (Interface)

View File

@ -45,29 +45,24 @@ set_reg(int r, char *b)
static void
put_reg(char r)
{
char c, *s = regs[(int)r];
if(r == '~') {
/* special stdin */
while(fread(&c, 1, 1, stdin) && c >= ' ')
*outp_++ = c;
} else if(s) {
char *ss = walk(s);
char c, *s = regs[(int)r], *ss;
if(!s) {
*outp_++ = '?', *outp_++ = r;
return;
}
*ss = walk(s);
if(r == '*') {
/* special implode */
if(*s == '(') {
if(*s == '(') { /* special implode */
while(s < ss && (c = *s++))
if(!spacer(c)) *outp_++ = c;
}
/* special explode */
else {
} else { /* special explode */
int i, depth = 0;
while((c = *s++) && !spacer(c))
*outp_++ = c, *outp_++ = ' ', *outp_++ = '(', depth++;
for(i = 0; i < depth; i++)
*outp_++ = ')';
}
} else if(r == ':') {
/* special stdout */
} else if(r == ':') { /* special stdout */
if(*s == '(') s++, --ss;
while(s < ss) {
c = *s++;
@ -80,10 +75,11 @@ put_reg(char r)
} else
putc(c, stdout);
}
} else if(r == '~') { /* special stdin */
while(fread(&c, 1, 1, stdin) && c >= ' ')
*outp_++ = c;
} else
while(s < ss) *outp_++ = *s++;
} else
*outp_++ = '?', *outp_++ = r;
}
static char *